Order of constructors in Data.Map.Internal

chessai . chessai1996 at gmail.com
Mon Feb 4 00:39:45 UTC 2019


Awesome, thanks.

On Sun, Feb 3, 2019, 7:35 PM Carter Schonwald <carter.schonwald at gmail.com
wrote:

> This is about first run  branch prediction on cpus and how constructor
> order can influence code gen of case expressions.
>
> This is more Andreask’S wheelhouse rather than David’s.  In fact Andreas
> has some work to make things like this easier to do in progress.
>
> Johan did some super detailed benchmarking when he did this and other
> work.  Perhaps he can share with you more about how he did it. I ccd him on
> this email.
>
> On Mon, Jan 28, 2019 at 4:44 PM chessai . <chessai1996 at gmail.com> wrote:
>
>> When looking through the source of Data.Map.Internal, there's a note:
>>
>> -- [Note: Order of constructors]
>> -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> -- The order of constructors of Map matters when considering performance.
>> -- Currently in GHC 7.0, when type has 2 constructors, a forward
>> conditional
>> -- jump is made when successfully matching second constructor. Successful
>> match
>> -- of first constructor results in the forward jump not taken.
>> -- On GHC 7.0, reordering constructors from Tip | Bin to Bin | Tip
>> -- improves the benchmark by up to 10% on x86.
>>
>> I've been curious about this for a while now. GHC 7.0 was released
>> quite a long time ago, so I wonder if this is still the case? David
>> might know.
>> _______________________________________________
>> Libraries mailing list
>> Libraries at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20190203/dd3b20e0/attachment.html>


More information about the Libraries mailing list