我想测量php文件中一堆常量的确切加载时间。我选择了4种方法:
首先,我使用这些方法创建了4个不同的文件,然后用5000个随机名称和值对填充它们(所有值都相同)。
我尝试在PHP中加载它们并使用microtime
函数来测量加载时间,但结果似乎有点奇怪!这是我的test.php
文件:
// array
$time['array']['start'] = microtime(true);
$config_a = include('conf_array.php');
$time['array']['end'] = microtime(true);
// class
$time['class']['start'] = microtime(true);
include('conf_class.php');
$config_c = new Config();
$time['class']['end'] = microtime(true);
// define
$time['defin']['start'] = microtime(true);
include('conf_define.php');
$time['defin']['end'] = microtime(true);
// json
$time['json']['start'] = microtime(true);
$config_j = json_decode(file_get_contents('conf_json.json'));
$time['json']['end'] = microtime(true);
foreach ($time as $name => $item) {
echo $name . ": " . (($item['end'] - $item['start']) * 1000) . " units.";
}
当我使用一组新生成的文件加载test.php
时,我会得到以下结果:
Array: 7.9629421234131 units.
Class: 6.5279006958008 units.
Defin: 19.877910614014 units.
Json: 4.4741630554199 units.
但是当我点击刷新按钮(F5)时,结果会改变!以下是刷新页面后相同示例的结果:
Array: 1.7659664154053 units.
Class: 2.467155456543 units.
Defin: 6.4060688018799 units.
Json: 4.9409866333008 units.
然后,订单不再改变。似乎php文件(除了json之外的所有文件)在加载多次时会加载得更快。如果我重新启动apache(以及PHP),也会发生同样的事情。
我想知道为什么会这样?!它与某种缓存有关吗?
答案 0 :(得分:1)
我不知道Apache本身是否会进行基本缓存,但我认为它不应该是设计的。可能会安装几个导致此行为的模块:
也许你有这些,或者其他可能导致这种影响的原因。