Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

108
Views
timeit y su default_timer están completamente en desacuerdo

Comparé estas dos funciones (descomprimen los pares nuevamente en las listas de fuentes, provienen de aquí ):

 n = 10**7 a = list(range(n)) b = list(range(n)) pairs = list(zip(a, b)) def f1(a, b, pairs): a[:], b[:] = zip(*pairs) def f2(a, b, pairs): for i, (a[i], b[i]) in enumerate(pairs): pass

Resultados con timeit.timeit (cinco rondas, los números son segundos):

 f1 1.06 f2 1.57 f1 0.96 f2 1.69 f1 1.00 f2 1.85 f1 1.11 f2 1.64 f1 0.95 f2 1.63

Claramente, f1 es mucho más rápido que f2 , ¿verdad?

Pero luego también medí con timeit.default_timer y obtuve una imagen completamente diferente:

 f1 7.28 f2 1.92 f1 5.34 f2 1.66 f1 6.46 f2 1.70 f1 6.82 f2 1.59 f1 5.88 f2 1.63

Así que claramente f2 es mucho más rápido, ¿verdad?

Suspiro. ¿Por qué los tiempos difieren totalmente de esa manera y qué método de tiempo debo creer?

Código de referencia completo:

 from timeit import timeit, default_timer n = 10**7 a = list(range(n)) b = list(range(n)) pairs = list(zip(a, b)) def f1(a, b, pairs): a[:], b[:] = zip(*pairs) def f2(a, b, pairs): for i, (a[i], b[i]) in enumerate(pairs): pass print('timeit') for _ in range(5): for f in f1, f2: t = timeit(lambda: f(a, b, pairs), number=1) print(f.__name__, '%.2f' % t, end=' ') print() print('default_timer') for _ in range(5): for f in f1, f2: t0 = default_timer() f(a, b, pairs) t = default_timer() - t0 print(f.__name__, '%.2f' % t, end=' ') print()
over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!