
From: Daniel Fischer
To: "Branimir Maksimovic" CC: Haskell-Cafe@haskell.org Subject: Substring replacements (was: Differences in optimisiation ...) Date: Sat, 10 Dec 2005 22:56:10 +0100 and if you try it on
main2 :: IO () main2 = let src = replicate 1000 'r' dst = " # " str = replicate 999 'r' ++ 'c': replicate 1000 'r' out = replace src dst $ concat $ replicate 500 str out1 = replace src dst $ concat $ replicate 501 str in do putStrLn $ "Working very long" putStrLn $ show (out == out1) ++ "\nDone"
you'll see a real difference. I'm not sure, why your algorithm pays a so much higher penalty, though. Maybe, it'll be faster if you make searchr' &c local functions? I'll try.
Well, this is on my machine with your setup and -O2 flag: $ time replace.exe Working very long False Done real 0m31.828s user 0m0.015s sys 0m0.000s bmaxa@MAXA ~/tutorial $ time searchr.exe Working very long False Done real 0m37.531s user 0m0.015s sys 0m0.000s bmaxa@MAXA ~/tutorial $ time srchrep.exe Working very long False Done real 0m18.047s user 0m0.015s sys 0m0.015s bmaxa@MAXA ~/tutorial $ time replace1.exe Working very long False Done real 0m12.531s user 0m0.015s sys 0m0.000s replace1 is Bulat's newest algorithm. It is really incredibly fastest with this setup. Greetings, Bane. _________________________________________________________________ FREE pop-up blocking with the new MSN Toolbar - get it now! http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/