[LLVMdev] Extending AsmPrinter

David Greene dag at cray.com
Wed Aug 15 12:38:08 PDT 2007


On Wednesday 15 August 2007 13:10, Reid Spencer wrote:

> > It really depends on what you mean.  I've found that iostreams are
> > extremely slow, much slower than C stdio streams.  Eventually I'd like to
> > move them to stdio, not to more complex streambufs :)
>
> Eventually I'd like to move them to native syscalls adapted by
> lib/System and suited to the purposes of compilers :)

I was just about to say that.  While debugging my custom streambuf I had the
"opportunity" of investigating how libstdc++-v3 defines cout and friends.  
It's not pretty.  Basically, there's a stdio_sync_filebuf used as a proxy to
C's FILE *.  Because stdio_sync_filebuf does no buffering itself (delegating
that to FILE), basic_streambuf::overflow is called a lot.  Some of this is
mitigated with xsputn for multiple characters, but it's a lot of virtual 
function calls.

To get something faster probably means a custom buffering solution (which
my custom streambuf has, but is not particularly intelligent) and native 
syscalls.  The downside of my implementation is that it is POSIX-specific
and thus won't be real useful for Windows.

                                           -Dave



More information about the llvm-dev mailing list