Este script de benchmark prueba las importaciones dentro del bucle en lugar de importaciones externas. Los resultados muestran que las importaciones dentro del bucle son aproximadamente 3 veces más lentas que las importaciones a nivel de archivo.
import_benchmark.py
import time
import sys
def benchmark_import_outside():
"""Mide el rendimiento de importar el módulo math fuera del bucle."""
import math # Importar una vez fuera del bucle
start = time.time()
for _ in range(1_000_000):
x = math.sqrt(100) # Usar el módulo importado
end = time.time()
return end - start
def benchmark_import_inside():
"""Mide el rendimiento de importar el módulo math dentro del bucle."""
start = time.time()
for _ in range(1_000_000):
import math # Importar dentro del bucle (mala práctica)
x = math.sqrt(100)
end = time.time()
return end - start
def clear_math_from_cache():
"""Elimina el módulo math de sys.modules para forzar su recarga."""
if 'math' in sys.modules:
del sys.modules['math']
def main():
# Asegurarse de que math no esté en caché antes del benchmark
clear_math_from_cache()
# Benchmark de importación fuera del bucle
time_outside = benchmark_import_outside()
print(f"Time (import outside loop): {time_outside:.4f} sec")
# Limpiar math de la caché para asegurar una comparación justa
clear_math_from_cache()
# Benchmark de importación dentro del bucle
time_inside = benchmark_import_inside()
print(f"Time (import inside loop): {time_inside:.4f} sec")
# Calcular e imprimir la diferencia de rendimiento
ratio = time_inside / time_outside
print(f"Import inside loop is {ratio:.0f}x slower than importing outside.")
if __name__ == "__main__":
main()Resultados
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.en Core i7-6700, con Python 3.12.3 en
Echa un vistazo a artículos similares por categoría:
Python
Si este artículo te ha ayudado, considera invitarme a un café o hacer una donación vía PayPal para apoyar la investigación y publicación de nuevos artículos en TechOverflow