php与python的解释速度_PHP与python,PHP中的性能问题

在python中有一个素数分解的算法。对于一个大整数,它大约需要10毫秒。我为php重写了它。对于非常大的整数,我在php中使用了bc和{}函数。结果是非常慢,对于相同的输入,大约需要4秒!在

这是我的代码:

(注:主功能中的功能是单独测试的,而且速度非常快)public function primefactors($n, $sort = false) {

$smallprimes = $this->primesbelow(10000);

$factors = [];

// NOTE: bc or gmp functions is used for big numbers calculations

$limit = bcadd( bcsqrt($n) , 1);

foreach ($smallprimes as $checker) {

if ($checker > $limit) {

break;

}

// while (gmp_mod($n, $checker) == 0) {

// while ($n%$checker == 0) {

while ( bcmod($n, $checker) == 0 ) {

array_push($factors, $checker);

// $n = (int)($n/$checker);

$n = bcdiv($n, $checker);

// $limit = (int)(bcpow($n, 0.5)) + 1;

$limit = bcadd( bcsqrt($n) , 1);

if ($checker > $limit) {

break;

}

}

}

if ($n < 2) {

return $factors;

}

while ($n > 1) {

if ($this->isprime($n)) {

array_push($factors, $n);

// var_dump($factors);

break;

}

$factor = $this->pollard_brent($n);

$factors = array_merge($factors, $this->primefactors($factor));

$n = (int)($n/$factor);

}

if ($sort) {

sort($factors);

}

return $factors;

}

我的代码中是否存在性能问题??或者php本身存在性能问题?为什么python这么快?(大约快40倍)

编辑:下面是python代码:

^{pr2}$

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值