mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-28 21:05:08 +00:00
![]() > ~Builtins are also more efficient than `for` loops.~ Let's not promise performance because this code transformation does not deliver. Benchmark written by @dcbaker > `any()` seems to be about 1/3 as fast (Python 3.11.9, NixOS): ```python loop = 'abcdef'.split() found = 'f' nfound = 'g' def test1(): for x in loop: if x == found: return True return False def test2(): return any(x == found for x in loop) def test3(): for x in loop: if x == nfound: return True return False def test4(): return any(x == nfound for x in loop) if __name__ == "__main__": import timeit print('for loop (found) :', timeit.timeit(test1)) print('for loop (not found):', timeit.timeit(test3)) print('any() (found) :', timeit.timeit(test2)) print('any() (not found) :', timeit.timeit(test4)) ``` ``` for loop (found) : 0.051076093994197436 for loop (not found): 0.04388196699437685 any() (found) : 0.15422860698890872 any() (not found) : 0.15568504799739458 ``` I have retested with longer lists and on multiple Python versions with similar results. |
||
---|---|---|
.. | ||
red_knot | ||
red_knot_module_resolver | ||
red_knot_python_semantic | ||
red_knot_server | ||
red_knot_wasm | ||
red_knot_workspace | ||
ruff | ||
ruff_benchmark | ||
ruff_cache | ||
ruff_db | ||
ruff_dev | ||
ruff_diagnostics | ||
ruff_formatter | ||
ruff_index | ||
ruff_linter | ||
ruff_macros | ||
ruff_notebook | ||
ruff_python_ast | ||
ruff_python_ast_integration_tests | ||
ruff_python_codegen | ||
ruff_python_formatter | ||
ruff_python_index | ||
ruff_python_literal | ||
ruff_python_parser | ||
ruff_python_resolver | ||
ruff_python_semantic | ||
ruff_python_stdlib | ||
ruff_python_trivia | ||
ruff_python_trivia_integration_tests | ||
ruff_server | ||
ruff_source_file | ||
ruff_text_size | ||
ruff_wasm | ||
ruff_workspace |