
Just curious, but might it be faster to: replace the MVar handle with an IORef [Data.Sequence.Seq String] logs are appended with atomicModifyIORef then every n seconds, a worker thread uses atomicModifyIORef to clear the sequence and write the log messages to a handle? this way, logging a message doesn't require taking an mvar I have no idea if this is better, just thought i'd throw it out. On Aug 10, 2011, at 11:17 AM, Kazu Yamamoto (山本和彦) wrote:
Every user-thread of Mighttpd records a log message with Handle. Since Handle is protected with MVar, serialization is done. Multiple log messages are buffered in the buffer of Handle to reduce the number of the write system call. Moreover, I re-implemented hPut to reduce unnecessary intermediate data to compose a log message.