[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