Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Re: Shamless request for improving function speed.

From: joel:neely:fedex at: 28-Mar-2002 13:31

Hi, Alan, alan parman wrote:
> Re: Improving function speed (no code) >
...
> I still can't get rid of one 'append though ... > ... > s: j: i: 0 > state: make block! 256 > loop 256 [append state s s: s + 1] > ... >
It *can* be sped up slightly (saving a millisecond a month somewhere ;-) b: make block! n i: 0 t0a: now/time/precise loop n [append b i i: i + 1] t0b: now/time/precise b: make block! n i: -1 t1a: now/time/precise loop n [append b i: i + 1] t1b: now/time/precise b: make block! n i: -1 t2a: now/time/precise loop n [insert tail b i: i + 1] t2b: now/time/precise print [t0b - t0a t1b - t1a t2b - t2a] The first version is similar to yours, the second eliminates the doubled use of the counter, and the third uses the well- known APPEND ==> INSERT TAIL optimization. Timing the above five times for N of one million yields these results: 0:00:04.687 0:00:04.507 0:00:02.113 0:00:04.707 0:00:04.547 0:00:02.143 0:00:04.677 0:00:04.526 0:00:02.113 0:00:04.687 0:00:04.536 0:00:02.113 0:00:04.656 0:00:04.586 0:00:02.113 Most of the savings, as expected, results from the second optimization, but avoiding the "double-dipping" does have a measurable value. -jn-