On Sun, 26 Dec 2010 13:40:22 +0100 "Simen kjaeraas" <simen.kja...@gmail.com> wrote:
> > foreach (i ; 0..BIT_SIZE) { > > mask = MASKS[i]; > > bit = !!(code & mask); > > node = node.nodes[bit]; > > } > > But as you see masking that way lets a value of 2^i, not 1, in the > > 'true' case, which needs to be converted, either with "cast(bool)bit" or > > "!!bit". And this seems _very_ slow: runs about 3 times slower than > > backward traversal. > > This seems better implemented like this: > > foreach ( i; 0..BIT_SIZE ) { > bit = ( code >> i ) & 1; > node = node.nodes[bit]; > } You have not read my post carefully enough ;-) That's ~ how I coded traversing the bit seq backwards (right-to-left, LSB -> MSB); but I was trying to find a way to traverse it forwards. Anyway, than you for the pointer to std.intrinsic, seems helpful. Denis -- -- -- -- -- -- -- vit esse estrany ☣ spir.wikidot.com