gpt4 book ai didi

php - 为什么 PHP7 在执行这个简单的循环时比 Python3 快这么多?

转载 作者:太空狗 更新时间:2023-10-29 20:15:03 25 4
gpt4 key购买 nike

作为一个极其简单的基准测试,我在同一个 Raspberry Pi 3 模型 B 上的 PHP 7.0.19-1 和 Python 3.5.3(命令行)上执行了以下简单代码。

与 PHP 相比,Python 的执行时间可怕(74 秒对 1.4 秒)。谁能帮我理解为什么在 Python 上执行需要这么长的时间?有没有我做错了什么,或者一些优化/设置可以提高其性能以达到或超过 PHP 的性能?还是 Python 就那么慢(肯定不会!)?

是的,我看到了 this benchmark ,报告称 PHP 7 超越了其他语言,但您可能认为在执行如此简单的操作时,两者的优化程度相当。

如果用字符串赋值代替加法,Python 执行循环的速度大约是原来的两倍。但这仍然是 34 秒,而不是大约 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.036377191543579100000 1000000 的时间为 0.18501400947571100000010000000 的时间为 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.761641100000010000000 的时间是 7.42761800000000110000000100000000 的时间是 74.320387100000000

更新:是的,在@Amber 指出之后,我意识到我完全PEBKAKed 并且循环计数器相差一个数量级。即便如此,答案确实很有趣,所以值得提出这个问题。

最佳答案

当您使用相同的循环计数运行它们而不是让 Python 计数大一个数量级时,它们彼此相差一个数量级:

PHP: https://ideone.com/3ebkai 2.7089s

<?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(100000000);

python :https://ideone.com/pRFVfk 4.5708s

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(100000000))

关于php - 为什么 PHP7 在执行这个简单的循环时比 Python3 快这么多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48031283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com