[erlang-questions] What does "soft" real-time mean?
Fri Oct 20 14:00:47 CEST 2017
I have programmed high-frequency trading application in Erlang and
comparing its reaction performance in the live market with other competing
applications (mostly, in C).
It has been a consistent observation that my Erlang application lags
substantially behind the competing applications. In fact, it never matched
the reaction time of the so-called "slowest" C application in the market.
The benchmark reaction time is about 5 microseconds. It is the time elapsed
between tick to order. That is, the difference between the timestamps when
I receive the tick (market event) from the mailbox of my process and when I
submit the TCP send call on my order.
My process maintains the market depths of the securities and when my
desired price (as a function of best buyers and/or sellers on multiple legs
of the order) is observed, I compute the order terms and submit.
The entire computation and communication (with the market) takes place
within the single process and there are no collaborating processes (hence,
no inter-process messaging; not even ETS). Still, the reaction time is in
the order of 20 to 60 microseconds - that is, nowhere closer to the
benchmark reaction time (5 microseconds).
What I wish to hear from the experienced people on this forum here is
whether I am missing on something in my Erlang code, or should I just go
ahead and program in C.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the erlang-questions