From 8db23dd23028d83b625cd55d237aa4d5f0caee2b Mon Sep 17 00:00:00 2001 From: Ankush Menat Date: Fri, 23 Feb 2024 21:07:27 +0530 Subject: [PATCH] perf: Avoid use of glob for fetching python executable glob on env/**/bin is slowest operation in terms of overhead on CLI. --- bench/utils/bench.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/bench/utils/bench.py b/bench/utils/bench.py index 701e3780..9eba296a 100644 --- a/bench/utils/bench.py +++ b/bench/utils/bench.py @@ -32,8 +32,13 @@ logger = logging.getLogger(bench.PROJECT_NAME) @lru_cache(maxsize=None) def get_env_cmd(cmd: str, bench_path: str = ".") -> str: - # this supports envs' generated by patched virtualenv or venv (which may cause an extra 'local' folder to be created) + exact_location = os.path.abspath( + os.path.join(bench_path, "env", "bin", cmd.strip("*")) + ) + if os.path.exists(exact_location): + return exact_location + # this supports envs' generated by patched virtualenv or venv (which may cause an extra 'local' folder to be created) existing_python_bins = glob( os.path.join(bench_path, "env", "**", "bin", cmd), recursive=True ) @@ -41,8 +46,7 @@ def get_env_cmd(cmd: str, bench_path: str = ".") -> str: if existing_python_bins: return os.path.abspath(existing_python_bins[0]) - cmd = cmd.strip("*") - return os.path.abspath(os.path.join(bench_path, "env", "bin", cmd)) + return exact_location def get_venv_path(verbose=False, python="python3"):