用xdebug跟蹤程序性能時,發現一個定義了約七百個常量的文件,include_once()時消耗約六十毫秒的時間。事實上define()的效率比較低,如果需要定義大量常量,使用APC擴展提供的apc_define_constants()效果會好得多。

下面是對這個文件改造前後效率跟蹤結果的對比:

define()方案(ms) apc_define_constants()方案(ms)
啟動Web服務和PHP,第一次運行 58 4
不重啟Web服務和PHP,第二次運行 65 1
不重啟Web服務和PHP,第三次運行 66 1

由此可見,apc_define_constants()不但在初次調用時效能就超過define(),而且由於APC自身的緩存功能,在後續調用時效率會有進一步的提高,而define()基本沒有變化。

以下是apc_define_constants()的代碼示例:

1
2
3
4
5
6
7
8
9
10
<?php
if(!apc_load_constants('my_constants')) {
$constants = array(
'ONE' => 1,
'TWO' => 2,
'THREE' => 3,
);
apc_define_constants('my_constants', $constants);
}
?>

Posted via UltraBlog.vim.