Skip to content

Commit 1b57f00

Browse files
committed
update timings
1 parent bdcb043 commit 1b57f00

File tree

2 files changed

+37
-37
lines changed

2 files changed

+37
-37
lines changed

README.md

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -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
2929
insert 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
3131
insert 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
3434
insert 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
3636
insert 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

3939
Using 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
4242
insert 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
4444
insert 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
4747
insert 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
4949
insert 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

5252
Using 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
5555
insert 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
5757
insert 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
6060
insert 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
6262
insert 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

6565
Using 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
6868
insert 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
7070
insert 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
7373
insert 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
7575
insert 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

7878
Using 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
8181
insert 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
8383
insert 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
8686
insert 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
8888
insert 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

9393
Running 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
9898
Cancel orders at 4M - 8.5M per second
9999
```
100100

101101
Running 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

108108
The 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.

pricelevels.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class PointerPriceLevels {
6060
void insertOrder(Order *order) {
6161
auto itr = std::lower_bound(levels.begin(),levels.end(),order->price, cmpFn);
6262
OrderList *list;
63-
if(itr==levels.end() || (*itr)->price!=order->price) {
63+
if(itr==levels.end() || (*itr)->price()!=order->price) {
6464
list = new OrderList(order->price);
6565
levels.insert(itr,list);
6666
} else list = *itr;

0 commit comments

Comments
 (0)