PHP基准测试中的奇怪问题



我写这个片段是为了测试将字符串转换为整数所需的时间,我在这里尝试了这个片段,但结果非常有趣。

<?php
$s = "123456789";
$t = microtime(true);
$data["HI"] = $s;
echo json_encode($data);
$time1 = (microtime(true) - $t);
$t = microtime(true);
$data2["HI"] = $s;
echo json_encode($data2);
$time2 = (microtime(true) - $t);
if($time1 > $time2) {
echo "yes";
echo $time1;
echo $time2;
}
?>

结果

yes
$time1 => 1.2874603271484E-5
$time2 => 3.0994415283203E-6

奇怪的是,为什么同样的代码需要更多的时间才能运行?

:(好@Mahdi Bagheri

<?php
function dowork(){
$s = rand(100000,999999);
$t = microtime(true);
$data["HI"] = $s;
$j= json_encode($data);
$time1 = (microtime(true) - $t);
return $time1;
}
$avg = 0; $limit = 1000000; $start = date("h:i:sa");
for($x=1 ;  $x<=$limit; $x++){
$avg = ($avg + dowork())/$x;
print "Iteration: ".$x. " Average = ". $avg ."rn";
}
print "Starting time is " . $start."rn";
print "Ending time is " . date("h:i:sa")."rn";
print "Average=".$avg;
?>

我的结果:

开始时间为上午09:21:05

结束时间为上午09:21:12

平均值=9.5367527008247E-13

这是一台搭载i9-9750 CPU的华硕G531T笔记本电脑。

对于其他想玩这个的人,不要在你的网页上运行它,只能在CLI上运行,比如:$php/path/to/test.php,否则可能会导致浏览器崩溃。它在CLI中当然更快,并且使用换行符而不是换行符进行格式化。

相关内容

  • 没有找到相关文章

最新更新