我对Python引擎在循环迭代中的如此低的性能感到好奇。我已经在nodejs,php和python上测试了相同的算法。这是代码段和结果
test.php:
<?php
$t1 = time();
for($i = 1; $i < 50000; $i++){
$v = 1;
for($j = 1; $j < 50000; $j++){
}
}
$t2 = time();
echo $t2 - $t1;
test.js:
let t1 = Date.now()
for(let i = 1; i < 50000; i++){
let v = 1
for(let j = 1; j < 50000; j++){
}
}
let t2 = Date.now()
console.log(t2 - t1)
test.py:
import time
t1 = int(time.time())
L1 = list(range(50000))
L2 = list(range(50000))
for x in L1:
z = 1
for y in L2:
pass
t2 = int(time.time())
print(t2 - t1)
结果:
节点test.js1640(1.6秒)
php test.php27(27秒)
python3 test.py107(107秒)
正如@maxy回答的那样,您可以使用numba加速for循环。我的计算机上以下代码的结果是0.07。
import time
from numba import jit
@jit
def loop_test(num):
a = 0
for i in range(num):
for j in range(num):
a += 1
return a
def main():
t1 = time.time()
ret = loop_test(50000)
t2 = time.time()
print(t2 - t1)
if __name__ == "__main__":
main()