[erlang-questions] trading systems

Andrew Thompson andrew@REDACTED
Thu Oct 1 18:40:39 CEST 2009


On Thu, Oct 01, 2009 at 05:04:12PM +0100, Joel Reymont wrote:
> 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.
> 

There's always the undocumented hipe bit and bytearrays (which are
mutable) if you're willing to sacrifice everything on the altar of
performance.

http://erlang.org/pipermail/erlang-questions/2009-April/043460.html

Andrew


More information about the erlang-questions mailing list