|
Posted by Robert Erstwhile on 10/07/05 18:30
Does anyone know if there is any way to improve php array performance?
I am currently developing an application which uses very large
multidimensional arrays, with many multiple dimensions. I am rapidly
discovering that php seems to be quite weak in this area.
I have finally found a way to "allocate" the memory for php arrays
reasonably quickly and efficiently. The following code segment runs in
approx 0.03seconds and doesn't use too much memory ~ 20mb.
$array = array_fill(0,1,array_fill(0,73,array_fill(0,100001,0.01)));
However if I try to fill the array using a bunch of nested loops it uses
100s of mbs and takes a lot longer to execute. Plus if I want to change any
values within this array structure it seems to have the same effect (poor
performance). It seems like due to the way arrays are implemented within php
the environment rebuilds the array in memory everytime you make any change
to an element within the array; which is expensive.
After much reading around the subject it seems that arrays in php are not
*really* arrays at all but hash-tables, or "maps" according to the
documentation.
Does anyone know if there is any alternative data-structures to the array in
php that work more efficiently in multiple dimensions, or any other thoughts
on overcoming this problem. If I don't figure it out I'm probably going to
have to rewrite the thing in CGI/C++ to get the array performance; which I
would rather not do.
Thanks in advance.
Navigation:
[Reply to this message]
|