使用APC(最新版本/最新版本)时,autoload是否真的会破坏性能。基准?

时间:2011-01-24 23:35:40

标签: php apc

我试图找到一个明确的答案,即自动加载在使用APC时会导致性能下降的原因及其原因(基准测试?)

P.S。使用google / stackoverflow找到了此link,但我想知道这是否仍然存在?必须改进PHP来处理这个问题?因为autoload很酷!

2 个答案:

答案 0 :(得分:6)

就个人而言,我不相信依赖__autoload()是一种很好的做法。 PHP是一种松散类型的语言,而不是一种懒惰的语言。 :)

在这里查看一些表现:

Rasmus对此的回答(你也发现了)是我多年来的指导:

<arnaud_> does autoload have a performance impact when using apc ?
<Rasmus_> it is slow both with and without apc
<Rasmus_> but yes, moreso with apc because anything that is autoloaded is pushed down into the executor
<Rasmus_> so nothing can be cached
<Rasmus_> the script itself is cached of course, but no functions or classes
<Rasmus_> Well, there is no way around that
<Rasmus_> autoload is runtime dependent
<Rasmus_> we have no idea if any autoloaded class should be loaded until the script is executed
<Rasmus_> top-level clean deps would speed things up a lot
<Rasmus_> it's not just autoload
<Rasmus_> it is any sort of class or function declaration that depends on some runtime context
<Rasmus_> if(cond) function foo...
<Rasmus_> if(cond) include file
<Rasmus_> where file has functions and classes 
<Rasmus_> or heaven forbid: function foo() { class bar { } }

答案 1 :(得分:5)

我做了更多googling,发现这个有趣的article总结如下:

每个策略都运行了10次基准测试:

enter image description here

<强>结论

每种方法都有其优点。在开发期间,您不希望每次添加新类时都必须运行脚本来生成类映射或手动更新类映射。也就是说,如果您希望网站有大量流量,那么在部署期间运行脚本以便为您构建类映射非常容易,因此可以让您从应用程序中获得额外的性能。