C++预处理器#define
完全不同.
PHP define()
与创建var有什么不同吗?
define("SETTING", 0); $something = SETTING;
VS
$setting = 0; $something = $setting;
小智.. 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扩展名).
'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扩展名).
一般来说,常量的想法是在你的程序中保持不变(听起来很有趣,对吧?;)).这意味着编译器(解释器)将在整个脚本中用FOOBAR的值替换"FOOBAR".
理论和优势如此之多 - 如果你编译的话.现在PHP非常动态,在大多数情况下你不会注意到不同,因为PHP脚本是在每次运行时编译的.除非你使用像APC,Zend Optimizer或eAccelerator这样的字节码缓存,否则Afai-can-tell你不应该看到常量和变量之间的速度有显着差异.那它就有意义了.
这里已经注意到常量的所有其他优点/缺点,可以在PHP手册中找到.
php > $cat='';$f=microtime(1);$s='cowcow45';$i=9000;while ($i--){$cat.='plip'.$s.'cow';}echo microtime(1)-$f."\n";
0.00689506530762
php > $cat='';$f=microtime(1);define('s','cowcow45');$i=9000;while ($i--){$cat.='plip'.s.'cow';}echo microtime(1)-$f."\n";
0.00941896438599
这是可重复的,具有类似的结果.在我看来,常量定义和/或使用比变量慢一点.