PHP是世界上最好的语言,这曾经是IT从业圈的一个梗,乃至一度作为其他语言运用者嘲笑的点,亦让PHPer倍感尴尬,一时又不晓得怎样反驳,怎样证明自己的观点。
PHP到底是不是这个世界上最好的语言,长久败兴,争论不休,C,c#,C++,PHP,python等运用者,都认为自己运用的语言才是世界最佳,就像C罗老自诩自己是历史最佳,世界最佳同样,那样怎样证明PHP到底是不是世界最佳呢?
是骡子是马拉出来溜溜,咱们今天来做一个测试,比较一下PHP和C#。
round one 读取文件方面
首要,咱们对每种语言都相当公平的读取文件代码方式:PHP和C#将同步、逐字节地读取一个4Mib体积的文件。让咱们瞧瞧PHP和C#在读取文件方面的较量吧!
PHP:
function test()
{
$file = fopen("/file/file.bin", r);
$counter = 0;
$timer = microtime(true);
while ( ! feof($file)) {
$buffer = fgets($file, 4096);
$counter += substr_count($buffer, 1);
}
$timer = microtime(true) - $timer;
fclose($file);
printf("counted %s 1s in %s milliseconds\n", number_format($counter), number_format($timer * 1000, 4));
}
test();
C#
using System.Diagnostics;
using System.Text;
var test = () => {
using var file = File.OpenText("/file/file.bin");
var counter = 0;
var sw = Stopwatch.StartNew();
while(!file.EndOfStream)
{
if(file.Read() == 1)
{
counter++;
}
}
sw.Stop();
Console.WriteLine($"Counted {counter:N0} 1s in {sw.Elapsed.TotalMilliseconds:N4} milliseconds");
};
test();
读取文件几乎不包括用户级代码,只是单纯测试一种语言的基本功能。
咱们来瞧瞧第1回合比赛结果:
PHP:32.49毫秒(平均超过10次运行)
C#:37.30毫秒(平均超过10次运行)
4Mib大概只是一张完整照片的体积,因此为了进一步证明PHP的优越,而后咱们换一个读取2.5g视频体积的文件速度:
PHP:24.82秒(平均超过10次运行)
C#:26.67秒(平均超过10次运行)
综上能够得出,不论是4Mib还是2.5g文件,PHP在读取文件速度方面都优于C#。
round two 查看文件性能
咱们选择一个后缀名bin的文件
PHP
function test()
{
$file = fopen("/file/file.bin", r);
$counter = 0;
$timer = microtime(true);
while (stream_get_line($file, 4096) !== false) {
++$counter;
}
$timer = microtime(true) - $timer;
fclose($file);
printf("counted %s 1s in %s milliseconds\n", number_format($counter), number_format($timer * 1000, 4));
}
test();
C#
var binTest = () =>
{
using var file = File.OpenRead("/file/file.bin");
var counter = 0;
var buffer = new byte[4096];
var sw = Stopwatch.StartNew();
while (file.Read(buffer, 0, buffer.Length) != 0)
{
counter += 1;
}
sw.Stop();
Console.WriteLine($"Counted {counter:N} 1s in {sw.Elapsed.TotalMilliseconds} milliseconds");
};
binTest();
经测试,结果如下:
PHP:423.50毫秒(平均超过10次运行)
C#:530.42毫秒(平均超过10次运行)
第二回合比赛结果表示,PHP在查看文件速度方面又快于C#。
总结
能手过招,胜在分毫,虽然几毫秒的差距,然则,依然分出了胜负,PHPer能够自豪的说出那句话了,争论能够休矣!
—-部分代码来自Csdn
|