Hi Konstantin,
Here's a version executing 10 times faster. I just changed h series type from
hash! to list!. Looks like in your case, cost for adding data is much higher
than for searching keys...
Regards,
-DocKimbel
n: 200000
h: make list! n
l: make block! n
start: now/time/precise
repeat i n [
oid: random n
pos: find h oid
either pos [
obj: pick l index? pos
][
obj: make object! [__oid__: oid]
insert tail h oid
insert tail l obj
]
if zero? i // 100 [clear h clear l]
]
print ["Elapsed time for adding" n "records" (now/time/precise - start)]
Selon Konstantin Knizhnik <[EMAIL PROTECTED]>:
>
> Hello Gregg,
>
> I was able to isolate the problem.
> The following script shows almost the same time as testindex.r
> searching for 200000 objects.
>
>
> n: 200000
> h: make hash! n
> start: now/time/precise
> repeat i n [
> oid: random n
> obj: select h oid
> if none? obj [
> obj: make object! [__oid__: oid]
> insert insert tail h oid obj
> ]
> if (i // 100) = 0 [clear h]
> ]
>
> print ["Elapsed time for adding" n "records" (now/time/precise - start)]
>
> At my computer execution of this script takes about 70 seconds.
> By replacing it with:
>
> n: 200000
> h: make hash! n
> l: make block! n
> start: now/time/precise
> repeat i n [
> oid: random n
> pos: find h oid
> either none? pos [
> obj: make object! [__oid__: oid]
> insert tail h oid
> insert tail l obj
> ] [obj: pick l index? pos]
> if (i // 100) = 0 [clear h clear l]
> ]
>
> print ["Elapsed time for adding" n "records" (now/time/precise - start)]
>
>
>
> I was able to reduce execution time till 33 seconds.
>
> Are there some better ideas how to improve performance of this peace
> of code?
--
To unsubscribe from this list, just send an email to
[EMAIL PROTECTED] with unsubscribe as the subject.