I am using .net/c++ version of quickfix. How does logging effect Quickfix performance? If I disable logging to file, can it help to increase performance of quickfix?
Thanks,
Quantitative Finance Stack Exchange is a question and answer site for finance professionals and academics. It only takes a minute to sign up.
Sign up to join this communityI answered a stackoverflow question that was pretty much identical over here
Maybe it was you who cross posted. Long story short, logging has a real cost. Sadly there isn't alot you can do to get around it with a stock quickfix implementation.
Same answer as @chollida - any kind of logging has real computational cost. You can improve on the QuickFIX implementation without disabling the logging functionality by increasing the buffer size, or using message middleware to pass the logging task to another thread or core (which therefore amortizes the total computation time in the QuickFIX path).
Disk I/O has a big latency cost, so you must use an asynchronous logging framework and the fastest way to pass messages from thread A to thread B is to use the disruptor pattern. For a good event sourcing (i.e. logging to a file without log levels like info, warn, error, etc.) framework you can take a look on CoralLog. It can log a 64-byte message in 87 nanoseconds on average. When it comes to throughput it can easily log 4 million 64-byte messages per second. That should be more than enough for most HFT strategies.
Disclaimer: I am one of the developers of CoralLog.