我为自己的一部分代码创建了一个简单的基准测试,因为我担心它无法正常工作。但是我得到了非常奇怪的结果。请看这个基准测试:
基准测试
测试文件
我注意到的是,追加选项应该更快,但实际上更慢。如果问题出在我的基准测试上,请告诉我。
有人能解释一下为什么会更慢吗?
此外,我发现当你不断按F5刷新时,文本文件会被清除。为什么会这样?
编辑:如Ilya Bursov所说,我已将基准测试更改为100次迭代。现在,追加操作似乎只需要很少的时间即可完成,而读写操作则需要很长时间。然而,即使清除缓存,单个迭代仍然会产生奇怪的结果。我知道这可能受到许多因素的影响,甚至可能受到误差边界的影响,但希望能得到详细的答案。
基准测试
测试文件
基准测试代码如下:
$start = microtime(true)*1000;
//code
$log=file_get_contents('test.txt').'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'."\n";
file_put_contents('test.txt', $log, LOCK_EX);
$end=microtime(true)*1000;
$time = $end-$start;
echo 'Time : '.(int)$time.'ms<br />';
$start = microtime(true)*1000;
//code
$log='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'."\n";
file_put_contents('test.txt', $log, LOCK_EX|FILE_APPEND);
$end=microtime(true)*1000;
$time = $end-$start;
echo 'Time : '.(int)$time.'ms<br />';
我注意到的是,追加选项应该更快,但实际上更慢。如果问题出在我的基准测试上,请告诉我。
有人能解释一下为什么会更慢吗?
此外,我发现当你不断按F5刷新时,文本文件会被清除。为什么会这样?
编辑:如Ilya Bursov所说,我已将基准测试更改为100次迭代。现在,追加操作似乎只需要很少的时间即可完成,而读写操作则需要很长时间。然而,即使清除缓存,单个迭代仍然会产生奇怪的结果。我知道这可能受到许多因素的影响,甚至可能受到误差边界的影响,但希望能得到详细的答案。