【发布时间】:2020-07-28 00:43:00
【问题描述】:
我写了这个 sn-p 来测试将字符串转换为整数所需的时间,我在这里尝试这个是为了好玩,但结果非常有趣。
<?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
奇怪的是为什么同样的代码需要更多的时间来运行?
【问题讨论】:
-
我已经在我的机器上尝试过这个,并且得到了相同的差异,但我认为这可以通过 CPU 架构来解释,因为首先代码被加载到 CPU 中运行,导致从磁盘通过 RAM 到 CPU 需要一些时间。第二个实例不需要通过相同的路径调用过程,而是使用已经存在的东西。我通过将您的测试修改为运行 3 次来验证这一点,分数如下:1.5020370483398E-5 5.0067901611328E-6 5.0067901611328E-6。看看第三次是一样的吗? CPU 已经可以使用一切。
-
@Onyx 我认为我们应该为 avg 基准测试这个代码大约一百万次。
标签: php casting benchmarking microtime