由于对Linux系统一直不懂,Windows用习惯了看到命令行就有点头大。一直听说PHP在Linux系统的表现比Windows上要强,前几天发了一下狠,搞了一台CentOS服务器用于学习练习。这几天一直在测试CentOS性能,Linux服务器是1核1G内存的,是Apache2.4+PHP7.2的组合,而Windows服务器是2核4G内存的,是IIS7.5+PHP5.4组合。用了同一套PHP代码,测试性能差异。测试代码如下:
- $a = microtime(true);
- $tmp = 0;
- $d = 100000000;
- for ($i = 0;$i<$d;$i++)
- {
- $c = rand(0,100);
- $tmp = $tmp + $c;
- }
- $b = microtime(true);
- $e = $b - $a;
- echo "随机 $d 次累加,结果为 $tmp ,花费时间 $e 秒。";
复制代码 每次随机生成0-100的数字,累加到tmp变量,通过1亿次循环,最后输出累加结果和脚本执行时间。
- Windows系统结果为:
- 100000000 次累加,
- 结果为 4999798765 ,
- 花费时间 24.78125 秒。
- CentOS系统结果为:
- 100000000 次累加,
- 结果为 4999820894 ,
- 花费时间 8.3450050354004 秒。
复制代码 由于测试的PHP版本、服务器硬件并不一致,所以结果也不能说明什么。但是根据结果可以看到,Linux系统的确运行PHP效率比Windows系统效率要高些。
同时,在测试中发现了一个小问题,百思不得其解。同是CentOS,同是PHP7.2,但是Apache版本不同,结果有较大差异。在Apache版本为2.4.16时,上面脚本运行时长在5秒左右,但是在2.4.37版本的Apache时,脚本运行时长在8.5秒左右,居然慢了3秒多!不知道这3秒多是怎么产生的。
- var
- i:Integer;
- a,b,c:Int64;
- m,n:Int64;
- begin
- Randomize;
- a := 100000000;
- b := 0;
- m := GetTickCount;
- for i:=1 to a do
- begin
- c := Random(100);
- b := b + c;
- end;
- n := GetTickCount;
- memo1.Lines.Add(Format('总共累加%d次,结果为%d,耗时%d毫秒',[a,b,n-m]));
- end;
复制代码 用Delphi写了同样的程序,运行只要500多毫秒,看来编译语言效率比解释语言效率要高10倍啊
|
上一篇:还在骂慈利到岩泊渡的那条烂路?大家都忽视了它的6大功能~下一篇:岩泊渡烂路什么时候修!知道的留个言吧!
|