New patches in /srv/darcs/git-mirrors/utf8-string

commit d7386bea7fe286483ea559fb9b3898be080af700
Merge: ec2b859... b7aa0a0...
Author: Eric Mertens <[email protected]>
Date:   Thu Nov 17 13:35:01 2011 -0800

    Merge pull request #4 from TomMD/master
    
    Minor performance improvements

commit b7aa0a0b51e79186980e55403cd9018795fe3692
Author: Thomas M. DuBuisson <[email protected]>
Date:   Thu Nov 17 13:06:44 2011 -0800

    Add BangPatterns for an accumulator.  Inline decode.  Specialize take, drop.
    
    When considering a simple benchmark [1]:
    
       let p = ((== "en") . U.take 2)
       print . length . filter p . U.lines =<< L.readFile . head =<< getArgs
    
    It's apparent that we are underperforming (compare to the shell script
    solution, this take twice as long).  The accumulator of splitAt wasn't
    strict (used bang patterns).  Also, even with -O2, the construction /
    destruction of the tuple for take & drop's lifting of splitAt wasn't
    being optimized away.  Perhaps more investigation should be done re:
    GHC, but the cheap solution is to just duplicate code for take and
    drop, which is what this patch does.
    
    Original: user    0m1.704s
    Final: user    0m1.092s
    
    [1] 
http://stackoverflow.com/questions/8172889/quickly-parse-large-utf-8-text-file-in-haskell

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to