说真的,我应该写错PHP代码吗?

Dan*_*ark 18 php optimization translation code-generation

我最近正在做一些PHP工作,在我看过的所有代码中,人们倾向于使用很少的方法.(他们也倾向于使用很少的变量,但这是另一个问题.)我想知道为什么会这样,我发现这个音符"一个带有一个参数的函数调用和一个空函数体大约需要7-8美元一样的时间localVar的++操作.类似的方法调用当然是约$ 15 localVar的操作++" 在这里.

这是真的吗,即使PHP页面已被编译和缓存?我应该尽可能避免使用方法来提高效率吗?我喜欢用重复代码块的方法编写组织良好,人类可读的代码.如果有必要在没有方法的情况下编写平面代码,是否有任何程序可以"内联"方法体?这样我就可以编写漂亮的代码,然后在部署之前将其弄糟.

顺便说一句,我一直在看的代码来自Joomla 1.5核心和几个WordPress插件,所以我认为他们是知道他们在做什么的人.

注意:我很高兴每个人都跳过这个问题来谈论一般的优化,但事实上我们正在谈论解释语言的优化.至少有一些暗示我们谈论PHP的事实会很好.

And*_*ter 75

你需要多少"效率"?你有测量吗?过早优化是所有邪恶的根源,没有测量的优化总是为时过早.

还要记住优化俱乐部规则.

  1. 优化俱乐部的第一条规则是,您不优化.
  2. 优化俱乐部的第二条规则是,如果不进行测量,则不进行优化.
  3. 如果您的应用程序运行速度超过底层传输协议,则优化结束.
  4. 一次一个因素.
  5. 没有marketroids,没有marketroid时间表.
  6. 只要必要,测试就会继续进行.
  7. 如果这是您在优化俱乐部的第一个晚上,您必须编写测试用例.

  • 生活充满了失望. (3认同)

Til*_*ill 57

我认为Joomla和Wordpress不是优秀 PHP代码的最好例子,没有冒犯.我没有任何个人反对从事这项工作的人,并且很高兴他们如何让人们拥有一个网站/博客,而且我知道很多人将所有的空闲时间花在这两个项目中,但代码质量相当差(没有冒犯的意思).

如果您不相信我,请查看过去一年的安全公告; 也假设你正在寻找两者中的任何一个的表现,他们的代码也不擅长.所以它绝不是好的代码,但Wordpress和Joomla都在前端上表现出色 - 相当容易使用,人们可以获得一个网站并可以做些什么.

这就是他们如此成功的原因,人们不会根据代码质量而是根据他们使他们做的事情来选择它们.

要回答你的性能问题,是的,所有好的东西(函数,类等)都会减慢你的应用程序.所以我想如果你的应用程序/脚本都在一个文件中,那就这样吧.随后编写错误的PHP代码.

一旦扩展并开始复制代码,您应该考虑编写可维护代码带来的权衡(速度).:-)

恕我直言,由于两件事,这种折衷相当小:

  1. CPU 便宜.
  2. 开发人员并不便宜.

当你需要在六个月后回到你的代码中时,想一想如果那些nano秒运行它,当你需要修复一个令人讨厌的bug(三四次,因为重复的代码)时仍然会加起来.

你可以做各种各样的事情来让PHP运行得更快.通常人们会推荐缓存,例如APC.APC非常棒.它在后台为您运行各种优化,例如缓存PHP文件的字节码,并在userland中为您提供保存数据的功能.

因此,例如,如果每次运行该脚本时解析配置文件,则i/o非常重要.使用简单的apc_store()apc_fetch(),您可以将解析的配置文件存储在基于文件或基于内存的(RAM)缓存中,并从那里检索它,直到缓存过期或被删除.

当然,APC不是唯一的缓存.


Ada*_*ire 21

您应该看到对此问题的回答:开发人员是否应首先考虑可读性或性能?

总结共识:除非您知道(通过测试/分析)您的性能需要在某个特定领域得到解决,否则可读性就更为重要.


Gui*_*ido 9

在99%的情况下,您应该更好地担心代码可理解性.编写代码易于测试,理解和保持.

在性能确实至关重要的少数情况下,像PHP这样的脚本语言不是您的最佳选择.毕竟,PHP中的许多基本库函数都是用C语言编写的.

  • Facebook使用PHP,所以显然性能关键的网站可以在PHP上运行.不要传播FUD. (6认同)
  • 这不是FUD - 如果代码需要进行超级优化,那么解释的语言就不是可行的了. (4认同)
  • 什么可能*可以在PHP中解决的应用程序会有这样的性能要求,因为在PHP中太慢了?这肯定是FUD. (2认同)
  • @Guido:也许您应该考虑重写第二句或完全删除它.我100%同意你的看法 - 编写可以理解,可测试和可维护的代码比担心性能更重要 - 但是直接攻击PHP会让你陷入攻击性的旗帜,这让我感到非常兴奋.也许类似......"在性能真正至关重要的少数情况下,像PHP这样的脚本语言不是你的最佳选择.毕竟,PHP中的许多基础库函数都是用C语言编写的." (2认同)
  • 完成.我不是故意冒犯. (2认同)

war*_*ren 8

就个人而言,虽然可能有开销的函数调用,如果这意味着我写的代码一次(参数),然后用它在85米的地方,我WAY远一点,因为我可以在一个地方解决它.

脚本语言倾向于让人们认为"足够好"和"有效"是编码时要考虑的唯一标准.


Luc*_*man 5

特别是对于像PHP这样的快速解释器,我认为缺乏可读性/可维护性并不值得你从(也可能不会)获得它的效率.

关于WordPress的说明:我已经完成了很多WordPress代码的浏览.请不要假设那些人对好的代码有所了解.

  • 关于WordPress的质量如此真实. (2认同)