<div dir="ltr"><br><br><div class="gmail_quote">On Thu, May 27, 2010 at 11:28 AM, Ivan Miljenovic <span dir="ltr"><<a href="mailto:ivan.miljenovic@gmail.com">ivan.miljenovic@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On 27 May 2010 18:23, Michael Snoyman <<a href="mailto:michael@snoyman.com">michael@snoyman.com</a>> wrote:<br>
><br>
><br>
> On Thu, May 27, 2010 at 11:16 AM, Ivan Miljenovic<br>
> <<a href="mailto:ivan.miljenovic@gmail.com">ivan.miljenovic@gmail.com</a>> wrote:<br>
>><br>
>> On 27 May 2010 17:55, Michael Snoyman <<a href="mailto:michael@snoyman.com">michael@snoyman.com</a>> wrote:<br>
>> > Two comments:<br>
>> > * The exclamation point seems good enough for attributes. I copied that<br>
>> > for<br>
>> > Hamlet as well.<br>
>> > * If you're standardizing on UTF-8, why not support bytestrings? I'm<br>
>> > aware<br>
>> > that a user could shoot him/herself in the foot by passing in non-UTF8<br>
>> > data,<br>
>> > but I would imagine the performance gains would outweigh this. My recent<br>
>> > benchmarks on the BigTable benchmark[1] imply a huge performance gap<br>
>> > between<br>
>> > ByteStrings and other contenders.<br>
>><br>
>> Wow, I find it rather surprising that String out-performs Text; any<br>
>> idea why that is? I wonder if you're just using it wrong...<br>
>><br>
> Could be, I'd be very happy if that were the case. All of the benchmarks are<br>
> available on Github, and the bytestring[1], text[2] and string[3] versions<br>
> are all rather short.<br>
<br>
</div>Does using lazy Text values improve this? I find it a little strange<br>
that you concatenate so many individual Strings that much. Also, how<br>
about explicitly using Text values rather than OverloadedStrings?<br>
<div><div></div><div class="h5"><br></div></div></blockquote><div>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.</div>
<div><br></div><div>I don't know what you mean by "explicitly using Text values"; you mean calling pack manually? That's really all that OverloadedStrings does.</div><div><br></div><div>You can try out lots of different variants on that benchmark. I did that already, and found this to be the fastest version. </div>
<div><br></div><div>Michael</div></div></div>