I have no idea on performance, but could each clause not modify a bitmap index appropraitely ?
I have a ~ half-million element MaHashIndex. Tests if the range is 10000:
| n | n _ 0. Time millisecondsToRun: [ self entriesFromIndex: 1 do: [ : x :y : z ] until: [ : a : b : c | (n_n+1) > 10000 ] ]
"9841"
If the range is 100000:
| n | n _ 0. Time millisecondsToRun: [ self entriesFromIndex: 1 do: [ : x :y : z ] until: [ : a : b : c | (n_n+1) > 100000 ] ]
"97408"
So it looks like about 1000 per second, too slow. :(
Is there any way to avoid having to enumerate the entire ranges?