Kiedy zmieniłw Pythonie, dlaczego jeśli rank: jest szybsze niż w przypadku ranga = 0:
for i in range(0, 100):
rank = ranks[i]
if rank != 0:
pass
do:
for i in range(0, 100):
rank = ranks[i]
if rank:
pass
znalazłem drugi kod jest znacznie bardziej wydajny, dlaczego?
znak ława to, w mojej sytuacji szeregach jest numpy tablicę liczb całkowitych. Różnica jest znacznie większa.
import numpy as np
import time
N = 1000000
ranks = np.random.random_integers(0, 10, N)
start = time.time()
for i in range(0, N):
rank = ranks[i]
if rank != 0:
pass
print time.time() - start
start = time.time()
for i in range(0, N):
rank = ranks[i]
if rank:
pass
print time.time() - start
start = time.time()
for i in range(0, N):
if i != 0:
pass
print time.time() - start
start = time.time()
for i in range(0, N):
if i:
pass
print time.time() - start
wyjściowa:
1.15917396545
0.45020198822
0.123136997223
0.122531175613
skąd można zauważyć, że? czy porównałeś to? – zsong
Spodziewałbym się pewnego przyspieszenia, ponieważ w interpretowanym języku Python jest mniej pracy, a więcej dzieje się we wbudowanych metodach, ale w prawdziwym programie prawdopodobnie nie byłaby duża. (Nadal warto to robić, ponieważ jest to standardowy styl i mniej kodu.) – user2357112