如何在PHP中定义效率?

Pro*_*ody 20 php c-preprocessor

C++预处理器#define完全不同.

PHP define()与创建var有什么不同吗?

define("SETTING", 0);  
$something = SETTING;
Run Code Online (Sandbox Code Playgroud)

VS

$setting = 0;  
$something = $setting;
Run Code Online (Sandbox Code Playgroud)

小智 17

'define'操作本身相当慢 - 由xdebug profiler确认.

以下是http://t3.dotgnu.info/blog/php/my-first-php-extension.html的基准测试:

  • 纯'定义'
    380.785提取/秒
    14.2647意味着msecs/first-response

  • 用'hidef'扩展名定义的常量930.783
    fetches/sec
    6.30279表示msecs/first-response


断链更新

上面引用的博客帖子已离开互联网.它仍然可以通过Wayback Machine查看.这是另一篇类似的文章.

作者引用的库可以在这里找到(apc_define_constants)这里(hidef扩展名).


Til*_*ill 5

一般来说,常量的想法是在你的程序中保持不变(听起来很有趣,对吧?;)).这意味着编译器(解释器)将在整个脚本中用FOOBAR的值替换"FOOBAR".

理论和优势如此之多 - 如果你编译的话.现在PHP非常动态,在大多数情况下你不会注意到不同,因为PHP脚本是在每次运行时编译的.除非你使用像APC,Zend OptimizereAccelerator这样的字节码缓存,否则Afai-can-tell你不应该看到常量和变量之间的速度有显着差异.那它就有意义了.

这里已经注意到常量的所有其他优点/缺点,可以在PHP手册中找到.


JAL*_*JAL 5

php > $cat='';$f=microtime(1);$s='cowcow45';$i=9000;while ($i--){$cat.='plip'.$s.'cow';}echo microtime(1)-$f."\n";
Run Code Online (Sandbox Code Playgroud)

0.00689506530762

php > $cat='';$f=microtime(1);define('s','cowcow45');$i=9000;while ($i--){$cat.='plip'.s.'cow';}echo microtime(1)-$f."\n";
Run Code Online (Sandbox Code Playgroud)

0.00941896438599

这是可重复的,具有类似的结果.在我看来,常量定义和/或使用比变量慢一点.