@@ -12,6 +12,7 @@
12# - fd (https://github.com/sharkdp/fd)
12# - fd (https://github.com/sharkdp/fd)
15import time
16import time
17import subprocess as sp
18import subprocess as sp
@@ -30,7 +31,7 @@ MAX_NUM_FILES = 100
30SEARCH_ROOT = os.getenv("HOME")
31SEARCH_ROOT = os.getenv("HOME")
33−def find_slow_files(startup_time, language, glob_pattern):
34+def find_slow_files(startup_time, glob_pattern, language=None):
34 out = sp.check_output(
35 out = sp.check_output(
@@ -46,7 +47,8 @@ def find_slow_files(startup_time, language, glob_pattern):
48 paths = out.split(b"\n")[:-1]
49 paths = out.split(b"\n")[:-1]
50+ language_text = f"Language {language}, " if language else ""
49− print(f"Language: {language}, glob pattern: {glob_pattern} ({len(paths)} matches)")
51+ print(f"{language_text}glob pattern: {glob_pattern} ({len(paths)} matches)")
51 for path in paths:
53 for path in paths:
52 num_chars = int(sp.check_output(["wc", "-c", path]).split(b" ")[0].decode())
54 num_chars = int(sp.check_output(["wc", "-c", path]).split(b" ")[0].decode())
@@ -96,19 +98,27 @@ def measure_bat_startup_speed():
96 return min_duration
98 return min_duration
99−def main():
101+def traverse_all_languages(startup_time):
100− print("Measuring 'bat' startup speed ... ", flush=True, end="")
101− startup_time = measure_bat_startup_speed()
102− print(f"{startup_time * 1000:.1f} ms")
104 output = sp.check_output(["bat", "--list-languages"]).decode()
102 output = sp.check_output(["bat", "--list-languages"]).decode()
106 for line in output.strip().split("\n"):
104 for line in output.strip().split("\n"):
107 language, extensions = line.split(":")
105 language, extensions = line.split(":")
108 for ext in extensions.split(","):
106 for ext in extensions.split(","):
109− find_slow_files(startup_time, language, ext)
107+ find_slow_files(startup_time, ext, language)
110 if not ext.startswith("."):
108 if not ext.startswith("."):
111− find_slow_files(startup_time, language, f"*.{ext}")
109+ find_slow_files(startup_time, f"*.{ext}", language)
113+ print("Measuring 'bat' startup speed ... ", flush=True, end="")
114+ startup_time = measure_bat_startup_speed()
115+ print(f"{startup_time * 1000:.1f} ms")
117+ if len(sys.argv) == 1:
118+ traverse_all_languages(startup_time)
120+ pattern = sys.argv[1]
121+ find_slow_files(startup_time, pattern)
114if __name__ == "__main__":
124if __name__ == "__main__":