Skip to content

Commit ddb38d5

Browse files
author
greensheng
committed
perf
1 parent 9ad44be commit ddb38d5

File tree

3 files changed

+20
-7
lines changed

3 files changed

+20
-7
lines changed

matching/order_book.go

+6-3
Original file line numberDiff line numberDiff line change
@@ -289,17 +289,20 @@ func (o *orderBook) CancelOrder(order *models.Order) (logs []Log) {
289289

290290
func (o *orderBook) Snapshot() orderBookSnapshot {
291291
snapshot := orderBookSnapshot{
292-
Orders: []BookOrder{},
292+
Orders: make([]BookOrder, len(o.depths[models.SideSell].orders)+len(o.depths[models.SideBuy].orders)),
293293
LogSeq: o.logSeq,
294294
TradeSeq: o.tradeSeq,
295295
OrderIdWindow: o.orderIdWindow,
296296
}
297297

298+
i := 0
298299
for _, order := range o.depths[models.SideSell].orders {
299-
snapshot.Orders = append(snapshot.Orders, *order)
300+
snapshot.Orders[i] = *order
301+
i++
300302
}
301303
for _, order := range o.depths[models.SideBuy].orders {
302-
snapshot.Orders = append(snapshot.Orders, *order)
304+
snapshot.Orders[i] = *order
305+
i++
303306
}
304307

305308
return snapshot

pushing/order_book.go

+7-4
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,8 @@ func (s *orderBook) SnapshotLevel2(levels int) *OrderBookLevel2Snapshot {
145145
snapshot := OrderBookLevel2Snapshot{
146146
ProductId: s.productId,
147147
Seq: s.seq,
148-
Asks: [][3]interface{}{},
149-
Bids: [][3]interface{}{},
148+
Asks: make([][3]interface{}, utils.MinInt(levels, s.depths[models.SideBuy].Size())),
149+
Bids: make([][3]interface{}, utils.MinInt(levels, s.depths[models.SideSell].Size())),
150150
}
151151
for itr, i := s.depths[models.SideBuy].Iterator(), 0; itr.Next() && i < levels; i++ {
152152
v := itr.Value().(*matching.PriceLevel)
@@ -165,10 +165,13 @@ func (s *orderBook) SnapshotFull() *OrderBookFullSnapshot {
165165
Seq: s.seq,
166166
LogOffset: s.logOffset,
167167
LogSeq: s.logSeq,
168-
Orders: []matching.BookOrder{},
168+
Orders: make([]matching.BookOrder, len(s.orders)),
169169
}
170+
171+
i := 0
170172
for _, order := range s.orders {
171-
snapshot.Orders = append(snapshot.Orders, *order)
173+
snapshot.Orders[i] = *order
174+
i++
172175
}
173176
return &snapshot
174177
}

utils/utils.go

+7
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@ func DToF64(d decimal.Decimal) float64 {
6565
return f
6666
}
6767

68+
func MinInt(a, b int) int {
69+
if a <= b {
70+
return a
71+
}
72+
return b
73+
}
74+
6875
func SnakeCase(s string) string {
6976
in := []rune(s)
7077
isLower := func(idx int) bool {

0 commit comments

Comments
 (0)