Re: [Quickfix-developers] Quickfix throughput
Brought to you by:
orenmnero
From: Oren M. <ore...@ya...> - 2004-01-09 15:35:11
|
I've been asked this alot. We have done some amount of performance testing in the past, but it is a difficult question to answer in a straightforward manner. Many commercial engines post numbers but they all run on various platforms or hardware and are run with different persistance methods or no persistance at all. In any case it isn't really reasonable to say that QF can do X number of messages a second, because so much depends on many factors. Our results varied from several hundred to a few thousand depending on the hardware. Our tests were generally run on desktop machines, not server class hardware, and most of these tests were run a year ago. Optimizing how the FIX applications were coded up also played a factor, for instance reusing the same message and field objects over and over instead of creating new ones everytime gives a tremendous performance boost. During this testing process we did manage to double the performance of the engine in the general case, so it is definately faster than previous incarnations. Due to the availability of the sourcecode I also know that firms have produced proprietary versions specially optimized for their needs. I think the best way to answer optimization questions is to actually build a performance runner that is compiled along with QuickFIX that will be run on the intended hardware. This would be the best way to give a reasonable answer. Such a thing would be pretty straightforward to put together. There actually is an undocumented performance testing application that gives numbers for how long it takes to run certain operations. This is done by going into the quickfix/bin directory and typing ./pt -c 5000 ( or just pt -c 5000 on windows ). Where 5000 is the number of iterations to run. For instance on my machine I get the folowing results: Converting integers to strings: num: 5000, seconds: 0.004, num_per_second: 1.25e+06 Converting strings to integers: num: 5000, seconds: 0.001, num_per_second: 5e+06 Converting doubles to strings: num: 5000, seconds: 0.013, num_per_second: 384615 Converting strings to doubles: num: 5000, seconds: 0.017, num_per_second: 294118 Creating Heartbeat messages: num: 5000, seconds: 0.071, num_per_second: 70422.5 Serializing Heartbeat messages to strings: num: 5000, seconds: 0.111, num_per_second: 45045 Serializing Heartbeat messages from strings: num: 5000, seconds: 0.154, num_per_second: 32467.5 Creating NewOrderSingle messages: num: 5000, seconds: 0.243, num_per_second: 20576.1 Serializing NewOrderSingle messages to strings: num: 5000, seconds: 0.233, num_per_second: 21459.2 Serializing NewOrderSingle messages from strings: num: 5000, seconds: 0.325, num_per_second: 15384.6 Creating QuoteRequest messages: num: 5000, seconds: 2.884, num_per_second: 1733.7 Serializing QuoteRequest messages to strings: num: 5000, seconds: 0.39, num_per_second: 12820.5 Serializing QuoteRequest messages from strings: num: 5000, seconds: 2.486, num_per_second: 2011.26 Reading fields from QuoteRequest message: num: 5000, seconds: 0.955, num_per_second: 5235.6 Storing NewOrderSingle messages: num: 5000, seconds: 0.066, num_per_second: 75757.6 Validating NewOrderSingle messages with no data dictionary: num: 5000, seconds: 0.042, num_per_second: 119048 Validating NewOrderSingle messages with data dictionary: num: 5000, seconds: 0.133, num_per_second: 37594 This doesn't really give you a picture of the overall performance, but will point out bottlenecks. For instance if the engine can't create more than 10,000 NewOrderSingle messages on your hardware, you certainly won't exceed that number. However there are some caveats. These tests allocate messages on the heap instead of using faster stack allocation, and if you reuse your message and field objects as I stated earlier, that number becomes less relevant. "Van Gelder Eddy (KATO 2)" <edd...@cr...> wrote: Hi Oren, are any data available on the performance of the quickfix-engine ? How many messages can the Quickfix engine send/receive a second ? regards, Eddy ------------------------------------------------------- This SF.net email is sponsored by: Perforce Software. Perforce is the Fast Software Configuration Management System offering advanced branching capabilities and atomic changes on 50+ platforms. Free Eval! http://www.perforce.com/perforce/loadprog.html _______________________________________________ Quickfix-developers mailing list Qui...@li... https://lists.sourceforge.net/lists/listinfo/quickfix-developers --------------------------------- Do you Yahoo!? Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes |