【发布时间】:2011-04-30 15:55:11
【问题描述】:
这段代码执行时间为 0.8 秒,占用了我机器上 22Mb 的内存。
$x=500;
$y=500;
$im = imagecreatetruecolor($x,$y);
$ia=array();
for ($i = 0; $i < $x; $i++) {
for ($j = 0; $j < $y; $j++) {
$r=rand(0,96);
$g=rand(0,128);
$b=rand(0,255);
$ia[$i][$j]=ImageColorAllocate($im,$r,$g,$b);
}
}
可以做些什么来加快它,但更重要的是降低它在任何给定时间消耗的内存占用。
【问题讨论】:
-
您可以预先填充随机颜色列表,然后从这些颜色中进行选择,而不是每次都创建一个新实例。虽然,我不确定 php 的内存分配和收集是如何工作的。
-
随机颜色不是这里的问题,这只是为了解决问题而填充数组的一些代码。问题在于迭代和数组占用的内存。答案不需要涵盖调色板。
-
如果更改
$x和$y,内存使用情况如何变化? -
@david: 100x100=0.04591s/1.31Mb/131bytes/像素
-
300x300=0.37025s/8.91Mb/99bytes/像素
标签: php algorithm memory-management gd spl