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

[REBOL] Array under 1.2.8 was Re: Re: Sort by first part of line

From: rotenca::telvia::it at: 8-Sep-2002 17:59

Hi Joel and all,
> I should have pointed out that the modified algorithm below splits > the group number from the remainder of the line; therefore, some > post-processing might be needed to re-attach the three-digit prefix > to the data (unless, of course, the subsequent processing could use > the bucket index for that purpose). So the time comparison may not > be comletely fair.
This is a little true for all the test we made, someone use read/lines, someone read, someone ends with a block of line, someone with a block of blocks. More "exact" tests should be made with a file on disk and stop with a file on disk. A note, this does not work as one expect under 1.2.8: buffer: copy/deep array/initial 999 [[]] the correct expression under 1.2.8 is: buffer: array/initial 999 [] copy/deep is no more useful, and series now are well initialized. But the new array is too slow, here it is my patched version. I should like to know if works without errors and/or if soemone finds others optimizations: ------code----- array-patched: func [ [catch] ;PATCH: added "Makes and initializes a series of a given size. patched by ana" size [integer! block!] "Size or block of sizes for each dimension" /initial "Specify an initial value for all elements" value "Initial value" /local block rest ][ if not initial [value: none] if block? size [ rest: next size if tail? rest [rest: none] size: first size if not integer? size [make error! "Integer size required"] ] block: make block! size either rest [ loop size [ ;if series? value [value: copy/deep value] ;PATCH: removed insert/only tail block throw-on-error [array/initial rest value] ;PATCH: added tail and throw-on-error ] ][ either series? value [ loop size [insert/only tail block copy/deep value] ;PATCH: added tail ][ insert/dup block value size ;PATCH: removed block: ] ] block ;PATCH: removed head ] --- Ciao Romano