使用PHP函数别名性能差/不良做法?

时间:2010-01-29 20:02:58

标签: php optimization function

出于好奇,

内置PHP函数的别名是否比常规函数本身具有更多功能。

AKA,sizeof()花费的时间比count()还多吗?

微优化警察注意事项:除非存在巨大差异,否则我不打算尝试微观优化我的脚本。只是好奇。

请注意“只是自己动手”警察:我现在无法访问PHP环境。


似乎这也扩展到了“最佳实践”,因为PHP的文档声明别名最好不要使用,反过来应该简单地通过主函数调用。在这种情况下,这意味着count()应该在sizeof()上使用。

3 个答案:

答案 0 :(得分:3)

我很确定他们编译成相同的字节码等价,所以答案是否定的。

答案 1 :(得分:1)

据我所知,别名通常是几件不同事物的结果。例如,当名称约定发生变化时,或者函数名称本身会发生变化。立即消除旧公约将是灾难性的。此外,它们对来自不同语言背景的用户很有帮助,并且希望使用他们已经习惯的许多相同的熟悉方法。

我认为没有任何额外的开销。但请务必查看官方文档中鼓励使用哪种方法/函数名称,因为在不确定的未来,弃用总是可能会出现。

  

“...有些功能因为API清理而更改了名称或其他一些原因而旧名称仅作为别名保留以实现向后兼容性。使用这些别名通常是一个“好主意”,因为它们可能会被淘汰或重命名,这将导致无法移植的脚本......“

     

http://php.net/manual/en/aliases.php

答案 2 :(得分:1)

使用http://github.com/gms8994/benchmark/blob/master/php/sizeof_vs_count.php,这就是我想出的。当然,这只是比较sizeofcount,但它至少回答了问题的一部分

glens@glens-desktop:$ ./sizeof_vs_count.php 
sizeof($globals->x);: 1000000 iterations took 7.44s at 134374.010/s
count($globals->x);: 1000000 iterations took 8.21s at 121806.517/s
glens@glens-desktop:~/scripts/benchmark/php
glens@glens-desktop:$ ./sizeof_vs_count.php 
sizeof($globals->x);: 1000000 iterations took 7.84s at 127475.401/s
count($globals->x);: 1000000 iterations took 7.79s at 128437.659/s
glens@glens-desktop:~/scripts/benchmark/php
glens@glens-desktop:$ ./sizeof_vs_count.php 
sizeof($globals->x);: 1000000 iterations took 7.53s at 132807.066/s
count($globals->x);: 1000000 iterations took 7.49s at 133442.192/s