performance -速度比较-解释语言中的过程与面向对象

Translate

在诸如PHP和JavaScript之类的解释性编程语言中,采用面向对象方法而不是过程方法的后果是什么?

具体来说,我要寻找的是创建Web应用程序以及在过程式和面向对象的方法之间进行选择时要考虑的事项清单,以不仅优化速度,而且优化可维护性。如果您知道任何进一步探讨该问题的文章,那么引用的研究和测试案例也将有所帮助。

底线:使用解释语言的OO与过程比较时,性能真正受到了多大的影响(如果有)?

This question and all comments follow the "Attribution Required."

所有的回答

Translate

也许我疯了,但是担心在这种情况下使用解释性语言的速度就像试图弄清楚油漆棚的颜色一样。甚至不要让我们想到这种优化是完全不成熟的。

当您说“可维护性”时,您就打在了头上。我会选择最有生产力和最可维护的方法。如果以后需要速度,那么它就不会来自在解释语言内部的过程式和面向对象的编码范例之间进行切换。

来源
Translate

不幸的是,我也做了测试。我已经测试了速度,并且速度差不多,但是在测试内存使用情况以获取PHP中的memory_get_usage()时,我在OOP端看到了一个庞大的数字。

OOP为116,576字节,过程为18,856字节。我知道“硬件很便宜”,但是加油!使用量增加1000%?抱歉,这不是最佳选择。而且有这么多用户一次访问您的网站,我敢肯定您的RAM会烧毁或耗尽。我错了吗?

来源
Translate

底线:否,因为解释的开销超过了方法分派的开销。

来源
Translate

根据我的经验,使用OOP代码比使用过程更容易陷入高负载的站点,并且变得更加无响应。原因很容易理解。

与过程代码相比,OOP需要更多的内存分配(MALLOC)和更多的操作才能在内存中运行。它需要更多的CPU时间来执行其任务。它本质上是“开销”,包裹在过程代码中,增加了执行它的CPU负担,尤其是在执行数据库操作时。

许多程序员喜欢OOP的便利性,它们在简单的界面后面隐藏了一些黑匣子。但是,对于那些在用户负载沉重的情况下永远需要响应的复兴站点,我感到很满意。剥离OOP并将其替换为简单的过程函数产生了巨大的变化。

如果您不希望自己的站点很忙,则一定要使用OOP。如果您要构建一个高流量的系统,则需要从处理中剥离每个CPU周期,从输出中剥离每个字节。

来源
Translate

如果您使用的是解释语言,则两者之间的差异是无关紧要的。如果性能存在问题,则不应使用解释语言。两者的性能大致相同。

来源
Translate

您的表现将取决于执行方式而不是语言。您可以使用最慢的语言,并且只要您将其设计为可扩展的,它就可以扩展为世界上最大的网站。

只要记住优化的第一条规则即可。

别。

:)

来源
Translate

实际上,我在自己维护的网站上用python做过这样的小型测试,发现它们的速度几乎相等,过程方法赢得了大约十分之一秒的时间,但是OO代码是如此的重要清洁工我没有重复一次以上的练习。

真的,这并不重要(以我的经验而言)。

来源