作为一个非常简单的基准测试,我在同一台树莓派3型号B上执行了以下简单的PHP 7.0.19-1和Python 3.5.3(命令行)代码。
相比之下,Python的执行时间非常慢(74秒对比1.4秒的PHP)。有人能帮我理解为什么Python的执行时间要比PHP长这么多吗?我做错了什么,或者有一些优化/设置可以提高其性能以满足或超过PHP的性能吗?还是Python就是那么慢(肯定不是!)?
我看到了这个基准测试,报告说PHP 7在其他语言中表现出色,但是当进行这样一个简单操作时,你会认为两者都会被优化得差不多。
如果将字符串赋值替换为加法,Python执行循环的速度将快两倍。但即使如此,仍然需要34秒,而PHP只需要约1.1秒。
PHP7代码:
相比之下,Python的执行时间非常慢(74秒对比1.4秒的PHP)。有人能帮我理解为什么Python的执行时间要比PHP长这么多吗?我做错了什么,或者有一些优化/设置可以提高其性能以满足或超过PHP的性能吗?还是Python就是那么慢(肯定不是!)?
我看到了这个基准测试,报告说PHP 7在其他语言中表现出色,但是当进行这样一个简单操作时,你会认为两者都会被优化得差不多。
如果将字符串赋值替换为加法,Python执行循环的速度将快两倍。但即使如此,仍然需要34秒,而PHP只需要约1.1秒。
PHP7代码:
<?php
function test($x)
{
$t1 = microtime(true);
$a = 0;
for($i = 0; $i < $x; $i++)
{
$a++;
}
$t2 = microtime(true);
echo "Time for $x was " . ($t2 - $t1) . "\n";
return $a;
}
echo test(100000);
echo test(1000000);
echo test(10000000);
结果: 100000的时间为0.036377191543579 1000000的时间为0.18501400947571 10000000的时间为1.3939099311829
Python3代码:
import time
def test(x):
t1 = time.clock()
a = 0
for i in range(x):
a += 1
t2 = time.clock()
print("Time for {} was {}".format(x, t2 - t1))
return x
print(test(1000000))
print(test(10000000))
print(test(100000000))
结果: 1000000个项目的时间为0.761641 1000000 10000000个项目的时间为7.427618000000001 10000000 100000000个项目的时间为74.320387
更新:是的,当@Amber指出后,我意识到循环计数器相差一个数量级。尽管如此,答案真的很有趣,所以问这个问题还是值得的。
10000000
(7个零),而Python中最大的数字是100000000
(8个零)。 - Amber