> Here is a more readable and a bit faster version on dmd windows: > > size_t utfCount(string text) > { > size_t n = 0; > for (uint i=0; i<text.length; ++i) > n += ((text[i]>>6)^0b10)? 1: 0; > return n; > }
Nice. It is better with gdc linux 64bits too. I wanted to avoid conditional expressions like ?: but it's actually slightly faster that way. And now people can't tell it is dangerous because it could return a fuzzy number. Even faster, through less readable: size_t utfLength(string text) { size_t n=0; for (size_t i=0; i<text.length; ++i) n += (((text[i]>>6)^0b10) != 0); return n; } Let's see how we can boost std.utf.stride that way... -- Christophe