Implementing std.log

Jonathan M Davis jmdavisProg at gmx.com
Sun May 8 15:24:12 PDT 2011


> On 5/8/2011 11:45 AM, Jose Armando Garcia wrote:
> > I am not sure I follow. Writing to disk is slower than writing to
> > memory so you want to hide some of the cost of logging by either
> > buffering the write/log requests or messaging the requests to another
> > thread to do the logging for you. Does that answer your question?
> 
> I thought that might be the reason.  Makes sense if you have so much
> logging that it's a significant bottleneck, but I can't believe people
> write code like that.

They do at least some of the time. Constructing strings to log can be slow 
regardless of whether you're outputting them or not, and waiting for them to 
be outputted can slow things down quite a bit. So, if you add a lot of logging 
to your code to be sure of what's going on, it can really slow things down, 
and sometimes you _need_ that sort of logging. And sometimes, even if you 
don't or you can't afford it, someone naively does it and causes a bottleneck.

A lot of it depends on what type of program you're writing and who's writing 
it, but logging can be a definite bottleneck. And it can be very surprising 
how much a bottleneck it can be. If you're smart about it, you won't generally 
end up with logging being a large bottleneck, but logging CPU-intensive code 
is generally problematic because it _will_ become a bottleneck, and when you 
have larger projects (especially with a lot of people on them), it can become 
far too easy for logging code to be called for more often than you'd expect.

- Jonathan M Davis


More information about the Digitalmars-d mailing list