类和函数之间的性能差异

Posted

技术标签:

【中文标题】类和函数之间的性能差异【英文标题】:Preformance difference between classes and just functions 【发布时间】:2011-08-13 09:42:27 【问题描述】:

我正在用 php 编写一个网站,但我注意到页面加载需要 3-5 秒(从远程服务器),这是不可接受的。该软件依赖于大约 12 个类才能正常运行。我想知道如果我重写大多数类以仅使用常规 php 函数,我会获得多少性能提升。

感谢您的任何意见。

编辑:我主要依赖 Redis,并在这里和那里使用简单的 mysql 查询。

【问题讨论】:

可能不会有太大的不同。您可能希望使用 Xdebug 之类的工具来分析代码,以找出瓶颈所在。 另一个错误的微优化案例:(基准测试。感到惊讶/纠正。学习。 【参考方案1】:

函数或类应该几乎没有区别(完全可以忽略不计):这不是让您的网站/应用程序变慢的原因。

很难为您提供更多信息,因为我们不知道您的设置如何,但您可能想看看我发布到 this question 的答案:它包含一些有趣的想法,当涉及到表演时PHP 应用程序。

顺便说一句:12 节课真的不算多,如果可以的话……

【讨论】:

感谢您的链接。这会有所帮助:)【参考方案2】:

在过程式编程中重写所有应用程序可能是您做过的最糟糕的事情。面向对象编程不是为了提高性能,而是编写对程序员友好且易于维护的应用程序(等等)。

您不应该永远考虑重写 OO 应用程序程序。那不是目的。如果您曾经使用 OO 而不是过程编程有更大的资源消耗(这不太可能),您可能应该考虑更好地扩展应用程序。现在的硬件没那么贵。

另一方面,您的应用程序可能存在许多瓶颈,OO 甚至可能不在列表中。

您检查了吗:

您的互联网连接? 您的服务器的 Internet 连接? 您的服务器 ping 丢失? 您的服务器配置? (Apache/nginx/Lighttpd 或其他) 您的数据库服务器的配置? 您的数据库查询? 您的服务器负载? 连接到 Redis 的时机? 您的防火墙对 Redis 使用的端口的规则? 您的 Redis 配置? (maxclients, timeout)

如果您对上述至少一个问题的回答,请务必检查,如果问题仍然存在,请告诉我!

【讨论】:

【参考方案3】:

这种差异可能甚至无法衡量。

您的问题绝对不是您的代码本身,而是您访问数据库的方式。确保您的表被适当地索引,您将看到页面加载时间大幅下降。您可以使用EXPLAIN SELECT ... 获取有关查询实际运行方式以及其性能不佳的原因的更多信息。

【讨论】:

【参考方案4】:

你不会发现函数和类之间有什么区别。

很有可能,您的一个或多个类的编写效率低下,或者依赖于某些东西。示例可能包括在远程服务器上等待、图像处理、某些数据库(例如过载的数据库)或无数其他方法。您应该尝试分析您的代码以查看问题所在。

【讨论】:

以上是关于类和函数之间的性能差异的主要内容,如果未能解决你的问题,请参考以下文章

视图和内联表函数之间是不是存在性能差异?

RcppArmadillo 和 Armadillo 之间的性能差异

存储过程与函数编译和性能差异

concat 与 || 之间是不是存在性能差异?在甲骨文中

为啥两个查询之间的性能差异?

iPhone:NSURLRequestCachePolicy 设置之间的性能差异