Я пробовал синхронизировать некоторые из моего кода и заметил некоторые действительно странные результаты с pypy. Посмотрите на этот пример:Почему часы pypy() настолько неточны?
from time import clock
from random import randint
times = []
for _ in range(10):
start = clock()
sum(i * i for i in range(randint(1000000, 2000000))) # waste time
end = clock()
times.append(int((end - start) * 1000000))
for t in times:
print(t, "µs")
Бег с python3
, есть куча случайных результатов, как и ожидалось:
506246 µs
461735 µs
403287 µs
472049 µs
651156 µs
609496 µs
467181 µs
633187 µs
562603 µs
744360 µs
Бег с PyPy, кажется, что все это лишь с точностью до одной трети секунды :
43332 µs
36667 µs
30000 µs
23332 µs
19999 µs
23334 µs
26665 µs
20000 µs
36667 µs
26666 µs
Почему?
@ColonelThirtyTwo, если вы посмотрите на дисперсию чисел, вы увидите, что результаты pypy всегда выровнены на 1/30 (не 1/3) вторых границах, в отличие от результатов Python3. –
Я не вижу таких результатов. Когда я запускаю эту программу в Windows 7 с использованием Python 2.7, PyPy 2.4.0 и PyPy3 2.4.0, все они, как представляется, имеют одинаковую случайность и точность (вплоть до по меньшей мере микросекунд). –