Slow computation in for loop
Philippe Grosjean wrote:
I suspect that your problem comes from the rbind(). I have also noticed an exponentially slower execution with the increase of the size of the data frame that you rbind()s. It is much faster to rbind() several separated temporary data frames (let's say, ten by ten loops), and then to rbind() them all together.
Got it in one. This is one place where Splus performance is much better than R. Some simulations I did makes it look like Splus does not just enlarge objects one element at a time. Instead, the underlying memory is enlarged in larger increments and additions to the array use this hidden space. I thought about adding this feature, but in the end decided that pre-allocating the result is a better solution (the Splus enlargement strategy doesn't work when elements are prepended). At one one point there was a slot in the object header which could have served to hold the "true length" of objects, but I think that Luke Tierney has used it for other puposes.
Ross Ihaka Email: ihaka at stat.auckland.ac.nz Department of Statistics Phone: (64-9) 373-7599 x 85054 University of Auckland Fax: (64-9) 373-7018 Private Bag 92019, Auckland New Zealand