设备 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分钟会其他语言的朋友请提供,相同算法的代码用来测试,谢谢

解决方案 »

  1.   

    提示 call to undefined function Workerman\Lib\pcntl_signal 怎么解决?pcntl_signal 在win系统下怎么开启呢
      

  2.   

    你的php代码:设备macosx 10.13.6  E5 2650V2 16G  php5.6 nginx 结果如下
    start:1543162213.6
    end:1543162213.6
    used:3.09944152832E-5
    2
      

  3.   

    忘记打命令了 以为复制运行就行了  确实php慢