node.js 9.3与php 7.0计算速度对比

webmud 2018-01-23 10:29:02
设备 cpu:i7 5500u/ ram:8G ddr3 1600 × 1


计算1亿以内的质数,计算过程中单核使用率100%

node 9.3.0

代码:

var num=process.argv[2];
var start = new Date().getTime()/1000;
var prime=new Array(2,3);
var factor=new Array();
for(var i=1;i*6<num;i++){
var l=i*6-1;
var r=i*6+1;
factor=[1,l];
for(var j=2;j<=Math.sqrt(l);j++){
if(l%j==0)factor.push(j);
if(factor.length>2)break;
}
if(factor.length==2)prime.push(l);
factor=[];

factor=[1,r];
for(var j=2;j<=Math.sqrt(r);j++){
if(r%j==0)factor.push(j);
if(factor.length>2)break;
}
if(factor.length==2)prime.push(r);
factor=[];
}

var endat=new Date().getTime()/1000;
var used=endat-start;
console.log('start: '+start);
console.log('endat: '+endat);
console.log('used: '+used);
console.log('total: '+prime.length);

命令:node prime.js 100000000

结果:

start: 1516668823.685
endat: 1516669052.562
used: 228.87700009346008
total: 5761455

约229秒,不到4分钟

php 7.0.22

代码:

<?php
set_time_limit(0);
$num=$argv[1];
$time_raw=microtime();
$time_div=explode(' ',$time_raw);
$start=$time_div[1]+$time_div[0];
$factor=array();
$prime=array(2,3);
for($i=1;$i*6<$num;$i++){
$l=$i*6-1;
$r=$i*6+1;
$factor=array(1,$l);
for($j=2;$j<=sqrt($l);$j++){
if($l%$j==0)$factor[]=$j;
if(count($factor)>2)break;
}
if(count($factor)==2){$prime[]=$l;}
$factor=array();

$factor=array(1,$r);
for($j=2;$j<=sqrt($r);$j++){
if($r%$j==0)$factor[]=$j;
if(count($factor)>2)break;
}
if(count($factor)==2){$prime[]=$r;}
$factor=array();
}

$time_raw=microtime();
$time_div=explode(' ',$time_raw);
$endat=$time_div[1]+$time_div[0];
echo 'start:'.$start."\n";
echo 'end:'.$endat."\n";
echo 'used:'.($endat-$start)."\n";
echo count($prime)."\n";
?>

命令:php prime.php 100000000

结果:

start:1516669386.1753
end:1516672217.464
used:2831.2886910439
5761455

约2831秒,47分钟

会其他语言的朋友请提供,相同算法的代码用来测试,谢谢
...全文
1317 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nihaoa_ 2020-11-18
  • 打赏
  • 举报
回复
php7.3.7 一千万次用时81.80秒;node10.26一千万次用时14.79秒;可见php7.3比7.0有不少提升;不过这么比也不太公平,因为毕竟node有jit,php没有,对这种计算型测试php本身就吃亏;等到php8.0放出jit来再可以测试一下,相信差别就不大了;比拼IO性能的话,node有异步非阻塞,这个也很强悍,同样要比的话,php就要开启swoole扩展,也用异步io比拼这样才能体现出真正差距来;
qzzm 2018-11-26
  • 打赏
  • 举报
回复
你的php代码:设备macosx 10.13.6 E5 2650V2 16G php5.6 nginx 结果如下
start:1543162213.6
end:1543162213.6
used:3.09944152832E-5
2
qzzm 2018-11-26
  • 打赏
  • 举报
回复
引用 8 楼 qzzm 的回复:
你的php代码:设备macosx 10.13.6 E5 2650V2 16G php5.6 nginx 结果如下
start:1543162213.6
end:1543162213.6
used:3.09944152832E-5
2

忘记打命令了 以为复制运行就行了 确实php慢
zhuangjunx 2018-02-25
  • 打赏
  • 举报
回复
提示 call to undefined function Workerman\Lib\pcntl_signal 怎么解决?pcntl_signal 在win系统下怎么开启呢
taojiaheng 2018-02-25
  • 打赏
  • 举报
回复
我感觉 最多5秒
taojiaheng 2018-02-25
  • 打赏
  • 举报
回复
老哥 还在不 在算下C语言的速度
深圳phper 2018-01-31
  • 打赏
  • 举报
回复
语言不是问题关键在开发的人
从此不换网名 2018-01-29
  • 打赏
  • 举报
回复
每个工具的使用场景不一样,没有什么可以比的,正如单车跟小车放在不同的路况他们的行使速度也是不一样的!
xuzuning 2018-01-23
  • 打赏
  • 举报
回复
不就差十倍?很正常

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧