On Saturday, 22 March 2014 at 12:54:11 UTC, Paulo Pinto wrote:
Am 22.03.2014 13:38, schrieb Daniel Davidson:
On Saturday, 22 March 2014 at 11:46:43 UTC, Russel Winder
wrote:
It is also worth pointing out the LMAX Disruptor which is a
lock-free
ring buffer based framework used to create dealing platforms
on the JVM.
They outperform any other trading platform still.
That is wrong. Trading is competitive and your competitors
rarely will
inform you they are losing to you or beating you. And when you
do not
get the fills you want it is not always clear you are being
beaten. This
article
(http://mechanical-sympathy.blogspot.com/2011/08/inter-thread-latency.html)
suggests C++ version of the same architecture is faster than
the Java.
Thanks
Dan
Maybe this is a wrong conclusion, but from the comments, I
would say the Java version is pretty much on par with the C++
attempts.
I guess it depends where your edge comes from. If it is speed,
the following suggests it is worth it to go C++. 10% is huge and
reduction in variability is also huge.
[[ So what does this all mean for the Disruptor? Basically, the
latency of the Disruptor is about as low as we can get from Java.
It would be possible to get a ~10% latency improvement by moving
to C++. I’d expect a similar improvement in throughput for C++.
The main win with C++ would be the control, and therefore, the
predictability that comes with it if used correctly. The JVM
gives us nice safety features like garbage collection in complex
applications but we pay a little for that with the extra
instructions it inserts that can be seen if you get Hotspot to
dump the assembler instructions it is generating. ]]
If your edge is quickly trying out new algorithms and identifying
edge by trying many less latency sensitive strategies in the
market - then "pretty much on par" is a fine bar.
Thanks,
Dan