脚本速度与内存使用情况

时间:2010-03-20 05:38:54

标签: php optimization memory performance

我正在使用PHP中的图像生成脚本,并使其以两种方式工作。一种方法是缓慢但使用有限的内存,第二种方法更快,但使用6倍的内存。两个脚本都没有泄漏(据我所知)。

在有限的基准测试中,以下是他们的表现:

--------------------------------------------
METHOD  | TOTAL TIME | PEAK MEMORY |  IMAGES
--------------------------------------------
One     |     65.626 |     540,036 |     200
Two     |     20.207 |   3,269,600 |     200
--------------------------------------------

这是以前数字的平均值(如果你不想自己做数学运算):

--------------------------------------------
METHOD  | TOTAL TIME | PEAK MEMORY |  IMAGES
--------------------------------------------
One     |      0.328 |     540,036 |       1
Two     |      0.101 |   3,269,600 |       1
--------------------------------------------

我应该使用哪种方法?为什么?

我预计这会被大量用户使用,每个用户在正常访问期间向此脚本发出10-20个请求。

我倾向于使用更快的方法,因为虽然它使用了更多的内存,但它只有1/3的时间并且会减少并发请求的数量。

更新:我能够优化第二个选项并提出第三个选项,将内存使用量减少一半。一个接一个地运行新数字,这是新的基准:

--------------------------------------------
METHOD  | TOTAL TIME | PEAK MEMORY |  IMAGES
--------------------------------------------
One     |     51.901 |     798,900 |     200
Two     |     12.039 |   3,269,600 |     200
Three   |     13.667 |   1,815,624 |     200
--------------------------------------------

感谢您的指导和帮助!

3 个答案:

答案 0 :(得分:2)

我会选择第二个。它更快,对最终用户来说总是好的。但是,公羊的使用率很高,所以你必须权衡额外公羊的价格。将ram添加到服务器比添加整个新框更容易(也更便宜)。

另一方面,你有没有对这两个进行分析?我相信你可以到达某种快乐的中间地带。类似于第二个算法的速度,但第一个算法的内存使用量。在做出决定之前,请通过xdebug运行它。

答案 1 :(得分:2)

我认为这取决于你有多少可用内存。假设这些数字以字节为单位,那么即使是“更多内存”版本仍然只“使用3MB内存”。更多内存版本将继续更快,直到未完成的请求数量推动内存系统进行交换,此时,它将显着变慢......

答案 2 :(得分:0)

我读到你关于你如何做快速版本的评论,你可以使用像memcached这样的东西,所以你只需要将你的数组内容放在内存中一次。然后额外的内存使用几乎不重要。