[erlang-questions] What does "soft" real-time mean?

Avinash Dhumane nistrigunya@REDACTED
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...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20171020/2305aea4/attachment.htm>

More information about the erlang-questions mailing list