I/O overhead in opening and writing files

wren ng thornton wren at freegeek.org
Tue Aug 28 05:24:21 CEST 2012


On 8/27/12 6:25 PM, J Baptist wrote:
>
> Using ByteStrings and the C calls does indeed speed things up a bit, but not much.
> real	0m6.053suser	0m1.480ssys	0m4.550s
> For your interest:The original version (with Strings and openFile): http://hpaste.org/73803Faster (with Strings and c_open): http://hpaste.org/73802Even faster (with ByteStrings and c_open): http://hpaste.org/73801
> The problem may be that even with ByteStrings, we are stuck using show, and thus Strings, at some point.
> Ideas?

Don't use Show.

Show is only there for printing things at the REPL and has no place in 
performance-centric code. The bytestring-lexing[1] package has efficient 
functions for rendering integral numbers into ByteStrings[2]. And there 
are a number of other efficient ByteString renderers as well, such as 
blaze-builder[3].


[1] http://hackage.haskell.org/package/bytestring-lexing

[2] Albeit, they haven't been hyper-aggressively optimized (cf., 
readDecimal), but that's because I haven't run into the need for doing 
so. If you can demonstrate a real need, I'm willing to spend some time 
on it.

[3] http://hackage.haskell.org/package/blaze-builder

-- 
Live well,
~wren



More information about the Glasgow-haskell-users mailing list