Hi,
made some experiments with Rebol Find and here are some results:
n: 8192
Find/Block time: 2.44140625E-3 index: 6144
Bfind/block time: 6.103515625E-4 index: 6144
Find/hash time: 9.765625E-4 index: 6144
n: 4096 ; the block size
Find/block time: 1.3427734375E-3 index: 3072
Bfind/block time: 6.103515625E-4 index: 3072
Find/hash time: 4.8828125E-4 index: 3072
; where
bfind: func [
blk [block!]
value
/local d u m de ue me
] [
d: 1
u: length? blk
de: pick blk d
ue: pick blk u
while [(m: to integer! (d + u) / 2) > d] [
either (me: pick blk m) <= value [
set [d de] reduce [m me]
] [
set [u ue] reduce [m me]
]
]
either ue = value [u] [d]
]
Time was measured with 5% relative accuracy.
Regards
Ladislav