3 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
require_once并且include_once都要求系統(tǒng)記錄已經(jīng)包含/需要的內(nèi)容。每次*_once通話都意味著檢查該日志。所以肯定有一些額外的工作要做,但足以損害整個(gè)應(yīng)用程序的速度?
......我真的很懷疑......除非你真的使用舊硬件或者做很多事情。
如果你正在做的成千上萬(wàn)*_once,你可以做的更輕的時(shí)尚自己的工作。對(duì)于簡(jiǎn)單的應(yīng)用程序,只是確保你只包括一次應(yīng)該足夠了,但如果你仍然得到重新定義錯(cuò)誤,你可以是這樣的:
if (!defined('MyIncludeName')) {
require('MyIncludeName');
define('MyIncludeName', 1);
}
我個(gè)人會(huì)堅(jiān)持這些*_once陳述,但是對(duì)于愚蠢的萬(wàn)通基準(zhǔn),你可以看到兩者之間的差異:
php hhvm
if defined 0.18587779998779 0.046600103378296
require_once 1.2219581604004 3.2908599376678
10-100倍慢,require_once而且好奇的require_once是看起來(lái)比較慢hhvm。同樣,如果您運(yùn)行了*_once數(shù)千次,這只與您的代碼相關(guān)。
<?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 關(guān)注
- 650 瀏覽
添加回答
舉報(bào)