我最近正在做一些PHP工作,在我看到的所有代码中,人们倾向于使用很少的方法。(他们也倾向于使用很少的变量,但这是另一个问题。)我想知道为什么会这样,我发现“带一个参数和一个空函数体的函数调用与执行7-8 $localvar++操作的时间差不多,类似的方法调用当然是大约15个$localvar++操作”这里。
即使在编译和缓存PHP页面时也是这样吗?为了提高效率,我应该尽量避免使用方法吗?我喜欢在代码块被重复的地方用方法编写组织良好的、人类可读的代码。如果有必要编写没有方法的平面代码,是否有程序可以“内联”方法体?这样的话,我就可以编写好的代码,然后在部署之前修改它。
顺便说一下,我一直在看的代码是来自Joomla1.5内核和几个WordPress插件,所以我假设他们是知道自己在做什么的人。
注意:--我很高兴每个人都跳到这个问题上来讨论优化,在一般的中,但是实际上,我们谈论的是在解释语言中的优化。至少我们谈论PHP这一事实的一些暗示是很好的。
发布于 2008-10-09 17:53:27
我认为Joomla和Wordpress并不是最好的PHP代码示例,无意冒犯。我对从事这方面工作的人没有任何个人偏见,他们如何让人们拥有一个网站/博客是很棒的,我知道很多人把所有的空闲时间都花在了这两个项目上,但是代码质量相当差(无意冒犯)。
如果您不相信我的话,请回顾过去一年中的安全公告;同时假设您正在从这两种代码中的任何一种中寻找性能,那么它们的代码也不会在这两者中脱颖而出。所以这绝不是一个好代码,但Wordpress和Joomla都擅长于前端--非常容易使用,人们有一个网站,可以做一些事情。
这就是为什么他们如此成功的原因,人们不是根据代码质量来选择它们,而是根据他们能够做的事情来选择它们。
要回答你的性能问题,是的,所有的好东西(函数、类等等)都是真的。放慢你的应用程序。因此,我想如果您的应用程序/脚本都在一个文件中,那么就这样吧。那么,可以随意编写糟糕的PHP代码。
一旦展开并开始重复代码,就应该考虑编写可维护代码所带来的代价(在速度上)。:-)
IMHO的这种权衡是相当小的,因为有两件事:
当您需要在六个月后返回您的代码时,请考虑一下,如果那些nano秒节省了运行它,那么当您需要修复一个讨厌的bug时(因为重复的代码,需要修复三、四次),那么仍然需要加起来。
您可以做各种各样的事情来使PHP运行得更快。通常,人们推荐缓存,例如APC。装甲运兵车真的很棒。它在后台为您运行各种优化,例如缓存PHP文件的字节码,并在userland中为您提供保存数据的函数。
因此,例如,如果每次运行该脚本时解析一个配置文件,那么i/o非常关键。使用简单的商店()和取(),您可以将解析的配置文件存储在基于文件的或基于内存的缓存中,并从其中检索它,直到缓存过期或被删除。
当然,APC不是唯一的缓存。
发布于 2008-10-09 14:53:13
你需要多少“效率”?你测量过了吗?过早的优化是万恶之源,没有衡量的优化总是过早的。
还记得优化俱乐部规则。
发布于 2008-10-09 14:52:53
您应该看到对这个问题的回答:开发人员应该首先考虑可读性还是性能吗?
总结一下大家的共识:除非您知道(通过测试/分析)您的性能需要在某些特定领域得到解决,否则可读性要重要得多。
https://stackoverflow.com/questions/187594
复制相似问题