[erlang-questions] trading systems
Joel Reymont
joelr1@REDACTED
Thu Oct 1 18:04:12 CEST 2009
Kenneth,
On Oct 1, 2009, at 4:50 PM, Kenneth Lundin wrote:
> It would be nice if you could explain what the system needs to do
> and after that
> why you think it is a problem to store prices in an ETS-table.
> [...]
> Why are you talking about mmapped files? Please explain for a novice
> in trading systems.
It's high-frequency trading systems I'm talking about. Where's Serge
Aleynikov [1] when you need him?
I'd like to process an incoming price quote, make a decision and
submit a trade order with minimal latency. I know that this is
normally done using C++ (or OCaml [1]) but I'm wondering how this can
be achieved using Erlang.
Minimal latency is usually achieved by hitting the CPU cache as
frequently as possible and minimizing memory copying overhead. ETS
copies memory and I suspect it's use of the cache is rather poor by
virtue of being a "hash table" and pointing all over the place in
memory.
A simple array of floats or doubles groups data together in memory and
is very cache friendly. I figure that an Erlang binary is the closest
I can get to an array in Erlang. mmap-ing a file of floats or doubles
and wrapping it in a binary should avoid unnecessary copying of data
from disk to memory.
I think operating on binaries representing mmap-ed files of price
quotes is as close as you can get to low latency in Erlang. I know
that premature optimization is the root of all evil but I'd rather
have my teeth pulled than optimize Erlang. This is speaking from
experience. I figure a much better way is to choose a concept that
guarantees fast code from the start.
Thanks, Joel
[1] http://www.puppetmastertrading.com/blog/2009/07/08/the-other-interesting-thing-about-the-serge-aleynikov-story/
---
fastest mac firefox!
http://wagerlabs.com
More information about the erlang-questions
mailing list