私が変わったとき
for i in range(0, 100):
rank = ranks[i]
if rank != 0:
pass
に:
for i in range(0, 100):
rank = ranks[i]
if rank:
pass
2 番目のコードの方がはるかに効率的であることがわかりました。なぜですか?
それをベンチマークしてください。私の状況では、ランクは整数のnumpy配列です。違いははるかに大きいです。
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
出力:
1.15917396545
0.45020198822
0.123136997223
0.122531175613