3 回答
TA贡献1825条经验 获得超4个赞
require_once并且include_once都要求系统记录已经包含/需要的内容。每次*_once通话都意味着检查该日志。所以肯定有一些额外的工作要做,但足以损害整个应用程序的速度?
......我真的很怀疑......除非你真的使用旧硬件或者做很多事情。
如果你正在做的成千上万*_once,你可以做的更轻的时尚自己的工作。对于简单的应用程序,只是确保你只包括一次应该足够了,但如果你仍然得到重新定义错误,你可以是这样的:
if (!defined('MyIncludeName')) {
require('MyIncludeName');
define('MyIncludeName', 1);
}
我个人会坚持这些*_once陈述,但是对于愚蠢的万通基准,你可以看到两者之间的差异:
php hhvm
if defined 0.18587779998779 0.046600103378296
require_once 1.2219581604004 3.2908599376678
10-100倍慢,require_once而且好奇的require_once是看起来比较慢hhvm。同样,如果您运行了*_once数千次,这只与您的代码相关。
<?php // test.php
$LIMIT = 1000000;
$start = microtime(true);
for ($i=0; $i<$LIMIT; $i++)
if (!defined('include.php')) {
require('include.php');
define('include.php', 1);
}
$mid = microtime(true);
for ($i=0; $i<$LIMIT; $i++)
require_once('include.php');
$end = microtime(true);
printf("if defined\t%s\nrequire_once\t%s\n", $mid-$start, $end-$mid);
<?php // include.php
// do nothing.
- 3 回答
- 0 关注
- 636 浏览
添加回答
举报