Bonjour,
J'ai un script que j'ai décliné en version 2.7 et 3.3. Le script d'origine était celui en 3.3 où j'utilise timeit pour voir comparer la vitesse d'exécution de 2 fonctions. Surpris que la fonction que je pensais être la plus rapide était en fait beaucoup plus lente, j'ai alors testé en 2.7 pour lequel j'ai adapté le script. La fonction la plus rapide est toujours la plus rapide mais les temps des 2 fonctions sont beaucoup plus faibles en2.7. C'est cette différence que je souhaite expliquer.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import timeit
def f(max):
a = 0
for i in range(0, max):
a = a + i
return a
def g(max):
a = 0
i = 0
while i < max:
a = a + i
i = i + 1
return a
# Check results are the same
a = f(1000)
print a
a = g(1000)
print a
# See execution times
print timeit.timeit("f(1000)", setup="from __main__ import f")
print timeit.timeit("g(1000)", setup="from __main__ import g") |
Python 2.7 (r27:82525, Jul 4 2010, 07:43:08) [MSC v.1500 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
499500
499500
41.6989751267
74.8646763445
>>>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import timeit
def f(max):
a = 0
for i in range(0, max):
a = a + i
return a
def g(max):
a = 0
i = 0
while i < max:
a = a + i
i = i + 1
return a
# Check results are the same
a = f(1000)
print(a)
a = g(1000)
print(a)
# See execution times
print(timeit.timeit("f(1000)", setup="from __main__ import f"))
print(timeit.timeit("g(1000)", setup="from __main__ import g")) |
Python 3.3.4 (v3.3.4:7ff62415e426, Feb 10 2014, 18:13:51) [MSC v.1600 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
499500
499500
82.55615388232152
142.40860910955465
>>>
Pourquoi Python 3.3 est-il beaucoup plus lent ?
Bonne journée.
Partager