@@ -23,86 +23,86 @@ The PriceLevels implementation can be chosen by modifying the [typedef xxxxx Pri
2323
2424<pre >
2525
26- Using dequeue (main branch) :
26+ Using dequeue:
2727
28- insert orders 1000 levels, usec per order 0.213368 , orders per sec 4686734
28+ insert orders 1000 levels, usec per order 0.171672 , orders per sec 5825061
2929insert orders 1000 levels with trade match % 0
30- insert orders 1000 levels, usec per order 0.289039 , orders per sec 3459745
30+ insert orders 1000 levels, usec per order 0.231113 , orders per sec 4326883
3131insert orders 1000 levels with trade match % 31
32- cancel orders 1000 levels, usec per order 0.243564 , orders per sec 4105697
33- insert orders 10 levels, usec per order 0.175881 , orders per sec 5685652
32+ cancel orders 1000 levels, usec per order 0.231527 , orders per sec 4319150
33+ insert orders 10 levels, usec per order 0.125911 , orders per sec 7942117
3434insert orders 10 levels with trade match % 0
35- insert orders 10 levels, usec per order 0.248569 , orders per sec 4023026
35+ insert orders 10 levels, usec per order 0.187032 , orders per sec 5346690
3636insert orders 10 levels with trade match % 33
37- cancel orders 10 levels, usec per order 0.159411 , orders per sec 6273092
37+ cancel orders 10 levels, usec per order 0.157627 , orders per sec 6344090
3838
3939Using vector:
4040
41- insert orders 1000 levels, usec per order 0.194676 , orders per sec 5136753
41+ insert orders 1000 levels, usec per order 0.14516 , orders per sec 6888964
4242insert orders 1000 levels with trade match % 0
43- insert orders 1000 levels, usec per order 0.281497 , orders per sec 3552436
43+ insert orders 1000 levels, usec per order 0.219419 , orders per sec 4557484
4444insert orders 1000 levels with trade match % 31
45- cancel orders 1000 levels, usec per order 0.209419 , orders per sec 4775115
46- insert orders 10 levels, usec per order 0.151772 , orders per sec 6588830
45+ cancel orders 1000 levels, usec per order 0.185811 , orders per sec 5381812
46+ insert orders 10 levels, usec per order 0.114813 , orders per sec 8709837
4747insert orders 10 levels with trade match % 0
48- insert orders 10 levels, usec per order 0.199023 , orders per sec 5024542
48+ insert orders 10 levels, usec per order 0.163958 , orders per sec 6099119
4949insert orders 10 levels with trade match % 33
50- cancel orders 10 levels, usec per order 0.128149 , orders per sec 7803416
50+ cancel orders 10 levels, usec per order 0.121652 , orders per sec 8220169
5151
5252Using vector with structs:
5353
54- insert orders 1000 levels, usec per order 0.180841 , orders per sec 5529731
54+ insert orders 1000 levels, usec per order 0.154717 , orders per sec 6463397
5555insert orders 1000 levels with trade match % 0
56- insert orders 1000 levels, usec per order 0.403036 , orders per sec 2481170
56+ insert orders 1000 levels, usec per order 0.381428 , orders per sec 2621729
5757insert orders 1000 levels with trade match % 31
58- cancel orders 1000 levels, usec per order 0.178959 , orders per sec 5587872
59- insert orders 10 levels, usec per order 0.142271 , orders per sec 7028819
58+ cancel orders 1000 levels, usec per order 0.189634 , orders per sec 5273315
59+ insert orders 10 levels, usec per order 0.118384 , orders per sec 8447073
6060insert orders 10 levels with trade match % 0
61- insert orders 10 levels, usec per order 0.170982 , orders per sec 5848572
61+ insert orders 10 levels, usec per order 0.151584 , orders per sec 6597011
6262insert orders 10 levels with trade match % 33
63- cancel orders 10 levels, usec per order 0.116662 , orders per sec 8571771
63+ cancel orders 10 levels, usec per order 0.126755 , orders per sec 7889235
6464
6565Using map:
6666
67- insert orders 1000 levels, usec per order 0.194018 , orders per sec 5154174
67+ insert orders 1000 levels, usec per order 0.148093 , orders per sec 6752518
6868insert orders 1000 levels with trade match % 0
69- insert orders 1000 levels, usec per order 0.356886 , orders per sec 2802014
69+ insert orders 1000 levels, usec per order 0.262041 , orders per sec 3816202
7070insert orders 1000 levels with trade match % 31
71- cancel orders 1000 levels, usec per order 0.231138 , orders per sec 4326419
72- insert orders 10 levels, usec per order 0.159661 , orders per sec 6263258
71+ cancel orders 1000 levels, usec per order 0.207532 , orders per sec 4818534
72+ insert orders 10 levels, usec per order 0.117244 , orders per sec 8529235
7373insert orders 10 levels with trade match % 0
74- insert orders 10 levels, usec per order 0.26134 , orders per sec 3826435
74+ insert orders 10 levels, usec per order 0.195957 , orders per sec 5103173
7575insert orders 10 levels with trade match % 33
76- cancel orders 10 levels, usec per order 0.122617 , orders per sec 8155475
76+ cancel orders 10 levels, usec per order 0.123975 , orders per sec 806614
7777
7878Using map with structs:
7979
80- insert orders 1000 levels, usec per order 0.205884 , orders per sec 4857101
80+ insert orders 1000 levels, usec per order 0.145034 , orders per sec 6894920
8181insert orders 1000 levels with trade match % 0
82- insert orders 1000 levels, usec per order 0.315915 , orders per sec 3165408
82+ insert orders 1000 levels, usec per order 0.226345 , orders per sec 4418032
8383insert orders 1000 levels with trade match % 31
84- cancel orders 1000 levels, usec per order 0.253659 , orders per sec 3942300
85- insert orders 10 levels, usec per order 0.16376 , orders per sec 6106486
84+ cancel orders 1000 levels, usec per order 0.202022 , orders per sec 4949955
85+ insert orders 10 levels, usec per order 0.117999 , orders per sec 8474676
8686insert orders 10 levels with trade match % 0
87- insert orders 10 levels, usec per order 0.212822 , orders per sec 4698753
87+ insert orders 10 levels, usec per order 0.173564 , orders per sec 5761556
8888insert orders 10 levels with trade match % 33
89- cancel orders 10 levels, usec per order 0.118317 , orders per sec 845187
89+ cancel orders 10 levels, usec per order 0.123793 , orders per sec 8078001
9090</pre >
9191</details >
9292
9393Running OSX on a 4 GHz Quad-Core Intel Core i7 with a single instrument.
9494
9595```
96- Insert orders at 5.5M - 7M per second
97- Insert orders with 30% trade match, 4M - 6M per second
96+ Insert orders at 5.5M - 8.5M per second
97+ Insert orders with 30% trade match, 4M - 6.5M per second
9898Cancel orders at 4M - 8.5M per second
9999```
100100
101101Running same hardware with an instrument per core:
102102```
103- Insert orders at less than 40 nanoseconds per insert, more than 22M orders per second.
104- Insert orders with 31% trade match at less than 50 nanoseconds per insert/match.
105- Cancel orders at less than 30 nanoseconds per cancel.
103+ Insert orders at less than 50 nanoseconds per insert, more than 22M orders per second.
104+ Insert orders with 31% trade match at less than 65 nanoseconds per insert/match.
105+ Cancel orders at less than 70 nanoseconds per cancel.
106106```
107107
108108The test is fully cpu bound, and achieves a near 100% speedup per core. This is made possible using a few highly efficient lock-free structures.
0 commit comments