I have been optimizing my order book implementation recently, and I'm curious as to how far behind the curve I am. Order book being a data structure which supports the operations Add / Cancel / Reduce / Replace / Execute as in ITCH messages. Say, it also has to have 'fast' (i.e. something like O(1)) access to the best buy and sell orders.
Any volunteers?
Since I started the thread, I guess I'll go first. Disregarding I/O, my implementation processes each message in about 210 ns. It doesn't slow down for orders near the BBO (theoretically it's actually faster, but it's hard to get an exact measurement). Benchmark was run on an Intel i5-2500 (3.3 GHz, 256 KB L1, 1MB L2), DDR3-1333, on the historical file at ftp://emi.nasdaq.com/ITCH/09142012.itch41.gz.
Any volunteers?
Since I started the thread, I guess I'll go first. Disregarding I/O, my implementation processes each message in about 210 ns. It doesn't slow down for orders near the BBO (theoretically it's actually faster, but it's hard to get an exact measurement). Benchmark was run on an Intel i5-2500 (3.3 GHz, 256 KB L1, 1MB L2), DDR3-1333, on the historical file at ftp://emi.nasdaq.com/ITCH/09142012.itch41.gz.
.
. Lookup is even more stupid. In fact it's so stupid that I'm too embarrassed to say, so don't ask.