Python importy uvnitř smyčky jsou 3x pomalejší než importy na úrovni souboru
Tento benchmark skript testuje importy uvnitř smyčky místo importů mimo smyčku. Výsledky ukazují, že importy uvnitř smyčky jsou asi 3x pomalejší než importy na úrovni souboru.
import_benchmark.py
import time
import sys
def benchmark_import_outside():
"""Benchmark importing math module outside the loop."""
import math # Import once outside the loop
start = time.time()
for _ in range(1_000_000):
x = math.sqrt(100) # Use the imported module
end = time.time()
return end - start
def benchmark_import_inside():
"""Benchmark importing math module inside the loop."""
start = time.time()
for _ in range(1_000_000):
import math # Import inside the loop (bad practice)
x = math.sqrt(100)
end = time.time()
return end - start
def clear_math_from_cache():
"""Clear math module from sys.modules to force reload."""
if 'math' in sys.modules:
del sys.modules['math']
def main():
# Ensure math is not cached before benchmarking
clear_math_from_cache()
# Benchmark outside import
time_outside = benchmark_import_outside()
print(f"Time (import outside loop): {time_outside:.4f} sec")
# Clear math from cache to ensure fair comparison
clear_math_from_cache()
# Benchmark inside import
time_inside = benchmark_import_inside()
print(f"Time (import inside loop): {time_inside:.4f} sec")
# Calculate and print the performance difference
ratio = time_inside / time_outside
print(f"Import inside loop is {ratio:.0f}x slower than importing outside.")
if __name__ == "__main__":
main()Výsledky
benchmark_output.txt
Time (import outside loop): 0.0786 sec
Time (import inside loop): 0.2162 sec
Import inside loop is 3x slower than importing outside.na Core i7-6700, s Python 3.12.3 na
Podívejte se na podobné články podle kategorie:
Python
Pokud vám tento článek pomohl, zvažte, zda mi nekoupíte kávu nebo nepřispějete přes PayPal na podporu výzkumu a publikování nových článků na TechOverflow