Я наткнулся на что-то, что не имеет смысла. У меня есть этот код python, который делает 2 простых for-loops и просто измеряет время выполнения. Однако я обнаружил, что тот же самый код, вызванный функцией, занимает половину времени. Может кто-нибудь объяснить, почему?Python различной производительности для идентичного кода
print "no function"
start_time = time.time()
for i in range(10000):
for j in range(10000):
z = i*j
print z
print("--- %s seconds ---" % (time.time() - start_time))
# VS
def Function():
start_time = time.time()
for i in range(10000):
for j in range(10000):
z = i*j
print z
print("--- %s seconds ---" % (time.time() - start_time))
print "Function Call"
Function()
А вот выход:
no function
99980001
--- 8.89359378815 seconds ---
Function Call
99980001
--- 4.64798092842 seconds ---
Без тестирования и принятия необдуманного предположения я бы сказал, что локальные локаторы намного быстрее, чем глобальные, потому что они могут быть несколько оптимизированы (с использованием индекса, а не имени). –
Разница заключается в объеме переменных и их времени поиска. –
Вы оба правы, по-видимому, здесь уже был задан вопрос. Http://stackoverflow.com/questions/11241523/why-does-python-code-run-faster-in-a-функция – Alex