Back

[**] - 撮合引擎 不需要为整个order book做排序!只需要把元素插入到最新的点即可。

发布时间: 2019-08-22 08:55:00

如题。

参考:https://stackoverflow.com/questions/57605075/how-to-implement-an-engine-that-do-not-limit-the-order-count-of-an-user/57605458#57605458

原来的代码:

  # 把order放到 order books中.
  # 注意:可以做一个测试,看看更新个 包含1w个元素的order book需要多久.
  # FIXME 这里 不需要重新对数组做排序.
  # 插入的时候,插入到正确的位置就可以了。
  def self.add_ask_order order
    @@ask_order_book << order

    if @@ask_order_book.size > 1 
      @@ask_order_book = @@ask_order_book.sort! { |a, b|
        a.try(:price) <=> b.try(:price)
      }   
    end 

    update_order_book_to_redis order_book: @@ask_order_book, ask_or_bid: 'ask'
  end 

Back