Sure, if the ring size is a power of two, and a is greater than or equal to 0, then
a `mod` ringSize == a .&. (ringSize - 1) that is: a `mod` 8 == a .&. 7 a `mod` 256 == a .&. 255 etc. On 11/13/07, Justin Bailey <[EMAIL PROTECTED]> wrote: > > On Nov 13, 2007 2:21 PM, Ryan Ingram <[EMAIL PROTECTED]> wrote: > > Never mind, I realized this is a ring buffer with `mod` s. That's > another > > slow operation when you're doing code as tight as this. If you can > > guarantee the ring is a power of 2 in size you can use a mask instead, > or > > use my original suggestion of deriving rules from the previous rule and > the > > new bit; the initial state is determined by the last bits in the buffer > and > > you never wrap. > > I can't guarantee the ring is a power of 2 but do you feel like > explaining the mask suggestion anyways? > > Thanks for the bits suggestion - I'll see if that helps performance at > all. It looks like you have to be very careful in which concrete type > you choose or you'll get a lot of conversion going on. > > Justin >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe