On 14.08.2011 22:00, Levente Uzonyi wrote: > On Sun, 14 Aug 2011, Philippe Marschall wrote: > >> Hi >> >> In Seaside we get a lot of performance gains out of >> primitiveFindFirstInString. One thing that always annoyed me a bit is >> that it's not as optimized as it could be. >> >> The inclusionMap you give it are 256 consecutive boolean values (0 or >> 1). There is no need for this to be a 256 element ByteArray when each >> element can only be 0 or 1. We could as well make it a 32 element >> ByteArray and each byte holding eight bit values. Instead of using the >> asciiValue to directly index into the inclusionMap we would use the top >> five bits to index into the inclusionMap and the bottom 3 bits to "index >> into the byte". >> >> Did that make any sense? > > Do you want to save space?
I'm trying to trade memory access (which is slow) for a bit shift and two bit ands (which is fast). > Are you storing lots of inclusion maps (maybe > CharacterSets)? If not, then IMHO it's not worth to adding this feature > to this primitive, because runtime performance will be worse on both the > image side and the VM side. Why? Cheers Philippe