1

好吧,我知道我可以使用哪种工具进行优化、分析等……所以现在我知道了我所有的瓶颈。但我无法无限优化它们。我的意思是说 ?例如,我将点 A 作为我的主要瓶颈,我应用了优化,之后 CPU 时间、内存时间等变得更小,但与整个项目相关,它仍然是瓶颈。我的意思是,每次在任何项目中都有瓶颈,那么我应该停止优化的最后一点在哪里?

4

3 回答 3

2

如果你的代码的某个部分导致了瓶颈,也许最好的办法是退后一步,看看整个画面,我指的是你的整体设计。有时,摆脱无法修复的瓶颈的最佳方法是重新考虑您的设计模式。

这里有一些很好的来源

  1. http://en.wikipedia.org/wiki/Software_design_pattern
  2. http://www.phptechi.com/php-design-patterns.html
于 2012-06-27T08:11:16.107 回答
1

在我看来,这取决于要求。如果用户等待几秒钟加载页面,没关系。但如果用户在聊天时等待几秒钟,则需要优化。当我登录谷歌时,它需要超过 5 秒(它很长),但之后它很快。但如果聊天时需要同样的时间,那么我会更喜欢其他一些电子邮件 ID。一般来说,mysql、web-services、loops等都需要优化。当有很多图片时,比如在google图片搜索时,需要时间。用户可以等待。转到页面,看看你自己,你在加载页面时的感受。它长吗?如果是那么你需要优化。

于 2012-06-27T08:13:04.517 回答
1

假设您发现了一个“瓶颈”,当您修复它时,可以节省 30% 的时间。例如,时间从 10 秒缩短到 7 秒。

然后假设您找到另一个,当您修复它时,可以节省 30% 的 7 或 2.1 秒。这将时间缩短到 4.9 秒。

注意几件事。

  • 第二个问题只占原始 10 的 21%,所以最初它是一个不太大的问题,但在解决第一个问题后,第二个问题变得更大,以百分比表示。

  • 将其视为加速比。解决第一个问题后,您的加速比为 10/7 或 1.43 倍。修复第二个给你一个 7/4.9 或 1.43x 的比率。总加速比为 10/7 乘以 7/4.9,即 10/4.9 或 2.04 倍。您将程序的速度提高了一倍以上。

  • 这两个问题分别占了原始 10 的 30% 和 21%。如果还有两个,分别占 14.7% 和 10.3%,它们在配置文件中看起来会很小。但是如果你修复了所有四个,你的程序速度就会提高四倍!如果你错过其中任何一个,你不会。

事情就是这样。在你真正达到最低点之前,你总是可以让程序更快,而那些起初看起来微不足道的问题后来变得有价值。你得到的最终加速比会让你大吃一惊。

并非所有分析器都能找到所有问题。如果其中一个问题是您的探查器找不到的问题,那么您将达到您认为已尽可能优化但实际上没有的地步。

如果您想超越这一点,您需要一种能够发现所有问题的分析技术。 这是我的做法。

于 2012-06-27T13:34:01.680 回答