Hi:
I am trying to measure QuickFix performance, but have several questions.
I hope anyone has some clues about them.
*Some information: I am using MSVC2013 + QuickFix c++
*I use QueryPerformanceFrequency and QueryPerformanceCounter to measure to
micro second precision
*(1) To measure sending out messages.*
Basically, I have no problem on measuring this part.
But I have seen some commercial FIX engines, which publish their benchmark.
Some of them list their measuring results on QuickFIX to compare to their
product.
And usually, it shows QuickFix can handle sending message at about
7500~10000 messages per second.
(100~130 micro second / msg)
BUT, in my testing, it can only support up to 2000 messages per second. (500
micro seconds / msg)
So I wonder if anyone also test this, and share your results.
Why there is a 4x difference?
*My cpu has 3.0 Ghz, which is not super fast, but I thought it can support
up to 5000 at least.
*(2) To measure receiving message*
About this part, I totally have no idea how to measure.
The message shown in fromApp is also processed (it should be binary
information first, and then translated to string, and then translated to
QuickFIX message format.) I dont know how to measure the time of this
processing before the message shows in fromApp.
Simply put: How to measure from when the "information" arrived computer to
when the message in fromApp is ready to be used.
*(3) To measure receiving message (extracting)*
In QuickFIX, we can use fromApp to get message components.
So what I do is to measure how quick QuickFIX is extracting message
components.
My results show QuickFIX performances at about 50~100 micro seconds for
extracting one single component (OrdID, price, symbol etc)
I am aware that QuickFIX is mostly for education purpose, so one probably
shouldnt compare it with other dedicated commerical FIX engine. But I am
quite surprised the performance can have such a big difference, more than 50
x (some commercial FIX engine claims they can achieve 1 micro for
extracting).
What makes this such big difference? Or commercial FIX engine just brag? Or
I just didnt correctly use QuickFIX, so it has a poor performance?
Many thanks
Wjack
--
View this message in context: http://quickfix.13857.n7.nabble.com/Latency-measurement-tp6647.html
Sent from the QuickFIX - Dev mailing list archive at Nabble.com.
|