
On Thu, May 27, 2010 at 11:28 AM, Ivan Miljenovic wrote: On 27 May 2010 18:23, Michael Snoyman On Thu, May 27, 2010 at 11:16 AM, Ivan Miljenovic
On 27 May 2010 17:55, Michael Snoyman Two comments:
* The exclamation point seems good enough for attributes. I copied that for
Hamlet as well.
* If you're standardizing on UTF-8, why not support bytestrings? I'm
aware
that a user could shoot him/herself in the foot by passing in non-UTF8
data,
but I would imagine the performance gains would outweigh this. My
recent
benchmarks on the BigTable benchmark[1] imply a huge performance gap
between
ByteStrings and other contenders. Wow, I find it rather surprising that String out-performs Text; any
idea why that is? I wonder if you're just using it wrong... Could be, I'd be very happy if that were the case. All of the benchmarks
are
available on Github, and the bytestring[1], text[2] and string[3]
versions
are all rather short. Does using lazy Text values improve this? I find it a little strange
that you concatenate so many individual Strings that much. Also, how
about explicitly using Text values rather than OverloadedStrings? I don't do any string concatenation (look closely), I was very careful to
avoid it. I tried with lazy text as well: it was slower. This isn't
surprising, since lazy text- under the surface- is just a list of strict
text. And the benchmark itself already has a lazy list of strict text. Using
lazy text would just be adding a layer of wrapping. I don't know what you mean by "explicitly using Text values"; you mean
calling pack manually? That's really all that OverloadedStrings does.
You can try out lots of different variants on that benchmark. I did that
already, and found this to be the fastest version.
Michael