Прежде всего, обратите внимание, что версия Python, которую вы показываете, неверна: вы запускаете этот код в Python 2.7, а не 3.1 (это даже не допустимый код Python3).(К сведению, Python 3 обычно медленнее, чем 2.)
Тем не менее, в тесте Python есть критическая проблема: вы пишете его как глобальный код.Вы должны написать это как функцию.При правильной записи он работает примерно в два раза быстрее, как в Python 2, так и в 3:
def main():
i = 0
a = 0
while i < 6553500:
i += 1
if i != 6553500:
a = i
else:
print("o")
print(a)
if __name__ == "__main__":
main()
Когда вы пишете код глобально, у вас нет локальных элементов;все ваши переменные являются глобальными переменными.Локальные данные намного быстрее, чем глобальные в Python, потому что глобальные значения хранятся в dict
.К локальным ссылкам может обращаться виртуальная машина напрямую по индексу, поэтому поиск хеш-таблиц не требуется.
Также обратите внимание, что это такой простой тест, который вы действительно делаете, сравнивая несколько произвольных операций с байт-кодом.