速度比较 - 解释型语言中的程序与OO

在诸如PHP和JavaScript之类的解释性编程语言中,采用面向对象的方法而不是程序性方法会产生什么影响?

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

底线:在解释型语言中使用OO与Procedural进行比较时,真的有多大(如果有的话)?

0
额外 编辑
意见: 1

7 答案

也许我很疯狂,但是在使用解释性语言的情况下,担心速度就像试图弄清棚屋的颜色。我们甚至不会认为这种优化是完全过早的。

当你说'可维护性'时,你击中了头部。我会选择最具生产力和最易维护的方法。如果你以后需要速度,它不会来自在解释型语言中的程序和面向对象编码范例之间的切换。

0
额外
我有地狱老板。他对编程一无所知,但他认为他什么都知道(他曾经给我讲过Unix时间戳,告诉我,“Unix时间戳就像欧洲时间戳,他们很奇怪,他们把日期放在第一位,然后是这样的日期:dd / mm / yyyy“ROFL,真是个白痴)。所以当他发现我在做OO PHP时,他翻出来说它会“放慢我们的网站”。我正在寻找我能找到的任何类型的研究来证明他已经充满了它,以便我可以继续编程OO ...
额外 作者 cmcculloh,
听起来像是 clientsfromhell.net
额外 作者 Xeoncross,
面向对象的生产力较低,维护性较差。
额外 作者 Pablo Ariel,

底线:不,因为解释的开销压倒了方法调度的开销。

0
额外

如果您使用的是解释型语言,则差异无关紧要。如果性能是一个问题,您不应该使用解释型语言。两者的表现都差不多。

0
额外

我实际上在我维护的一个网站上用python做了一个这样的小测试,发现它们在速度上几乎相同,程序方法赢得了千分之一秒的胜利,但OO代码非常显着清洁我没有继续练习,只不过一次迭代。

所以真的,没关系(无论如何我的经验)。

0
额外

您的表现将以实施为特征,而不是语言。您可以使用最慢的语言,只要您将其设计为可扩展,就可以成为世界上最大的网站。

请记住优化的第一条规则。

别。

:)

0
额外

不幸的是,我也做了我的测试。我做了测试,测试速度也差不多,但是当在PHP中测试memory_get_usage()的内存使用情况时,我发现OOP方面的数字压倒性多。

OOP为116,576字节,程序为18,856字节。我知道“硬件便宜”,但是来吧!使用量增加1,000%?对不起,这不是最佳。有这么多的用户一次点击你的网站,我相信你的内存只会燃烧,或用完。我错了吗?

0
额外

根据我的经验,负载较重的站点会陷入停滞状态,并且与程序相比,OOP代码更容易变得无响应。原因很容易理解。

OOP需要更多的内存分配(MALLOC)以及比程序代码更多的内存运行操作。它需要更多的CPU时间来执行其任务。它本质上是'开销',缠绕在程序代码上,增加了执行它的CPU负担,特别是在执行数据库操作时。

许多程序员喜欢OOP的便利性,在简单的界面后面创建了一些黑盒子。不过,我已经收到了很好的回报,以振兴那些在用户负载很重的情况下永远回应的网站。剥离OOP并将其替换为简单的程序功能会产生巨大的差异。

如果你不希望你的网站非常繁忙,通过一切手段使用OOP。如果你正在构建一个高流量的系统,你会想要从处理过程中去掉每个CPU周期,并从输出中去除每个字节。

0
额外