用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.