Импорты внутри цикла в Python в 3 раза медленнее, чем импорты на уровне файла
Этот скрипт-бенчмарк тестирует импорты внутри цикла вместо импортов вне цикла. Результаты показывают, что импорты внутри цикла примерно в 3 раза медленнее, чем импорты на уровне файла.
import_benchmark.py
import time
import sys
def benchmark_import_outside():
"""Тестирование производительности импорта модуля math вне цикла."""
import math # Импорт один раз вне цикла
start = time.time()
for _ in range(1_000_000):
x = math.sqrt(100) # Использование импортированного модуля
end = time.time()
return end - start
def benchmark_import_inside():
"""Тестирование производительности импорта модуля math внутри цикла."""
start = time.time()
for _ in range(1_000_000):
import math # Импорт внутри цикла (плохая практика)
x = math.sqrt(100)
end = time.time()
return end - start
def clear_math_from_cache():
"""Очистка модуля math из sys.modules для принудительной перезагрузки."""
if 'math' in sys.modules:
del sys.modules['math']
def main():
# Убедиться, что math не кэширован перед бенчмаркингом
clear_math_from_cache()
# Бенчмарк импорта вне цикла
time_outside = benchmark_import_outside()
print(f"Время (импорт вне цикла): {time_outside:.4f} сек")
# Очистить math из кэша для честного сравнения
clear_math_from_cache()
# Бенчмарк импорта внутри цикла
time_inside = benchmark_import_inside()
print(f"Время (импорт внутри цикла): {time_inside:.4f} сек")
# Вычислить и вывести разницу в производительности
ratio = time_inside / time_outside
print(f"Импорт внутри цикла в {ratio:.0f}x медленнее, чем импорт вне цикла.")
if __name__ == "__main__":
main()Результаты
benchmark_output.txt
Время (импорт вне цикла): 0.0786 сек
Время (импорт внутри цикла): 0.2162 сек
Импорт внутри цикла в 3x медленнее, чем импорт вне цикла.на Core i7-6700, с Python 3.12.3 на
Check out similar posts by category:
Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow