php7和python3性能对比-为什么PHP7执行这个简单循环比Python3快得多?

作为一个非常简单的基准测试,我在PHP 7.0.19-1和Python 3.5.3(命令行)上对同一个Raspberry pi3模型B执行了下面的简单代码

与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) . " ";

return $a;

}

echo test(100000);

echo test(1000000);

echo test(10000000);

结果:

10万的时间是0.036377191543579

1000000次为0.1850140947571

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

100万

10000000的时间是7.427618000000001

1亿

100000000的时间是74.320387

1亿

更新:是的,在@Amber指出之后,我意识到我完全崩溃了,循环计数器是一个数量级的间隔。尽管如此,答案还是很有趣,所以值得一问。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值