I am having a problem with processing speed in QuickfixJ. I read in this question that its possible to process 300messages/sec. I also saw elsewhere numbers reported in the thousands. My Quickfix session code receives a list of messages and sends them one by one through Sesssion.SendToTarget();
It is possible that the loop in which I send the messages is slowing me down, but I was wondering is there a way to send a list of message or to speed up the process of sending these messages. It may also be possible that because I am logging to the screen that this is slowing me down. Would I benefit from running it headless and logging to just a file log?
I’ve seen QuickFIX/J processing messages in the thousands per second. However, you will have trouble getting that peformance in a single FIX session. The scenario I’m describing involved multiple sessions. The reason this is signficant is that the FIX protocol is inherently sequential per session due to the FIX sequence numbers. This effectively means you have one thread processing messages if you have one session. With multiple sessions, the engine can take advantage of multiple threads and processors.
Generally speaking, file I/O is the primary overhead. Look for ways to optimize the file system access. If you run the engine with no logging and a MemoryStore you’ll see it is quite fast. I wouldn’t use it for extreme low latency applications but it’s not bad.