【问题标题】:How does one avoid reallocation in a low-latency environment?在低延迟环境中如何避免重新分配?
【发布时间】:2013-07-10 03:01:07
【问题描述】:

在交易平台(低延迟环境)的订单簿中,您需要存储每个订单 ID,至少要验证每个订单都是唯一的。您在一个交易日内可以收到的订单 ID 数量是无限的。除了使用历史数据分析之外,没有任何数字可以让您适当地“猜测”来预先分配您的数据结构。有哪些方案可以避免当日订单 ID 容器重新分配?

【问题讨论】:

  • 面试或作业问题?
  • 天哪,也不是。为什么这被否决了?这是一个很好的问题,我自己断断续续地思考了一段时间。
  • 我认为这是一个很好的问题,但这里的人们在看待世界的方式上往往心胸狭窄。

标签: memory-management trading low-latency


【解决方案1】:

在交易平台(低延迟环境)的订单簿中,您需要存储每个订单 ID,至少要验证每个订单都是唯一的。您在一个交易日内可以收到的订单 ID 数量是无限的。除了使用历史数据分析之外,没有任何数字可以让您适当地“猜测”来预先分配您的数据结构。有哪些方案可以避免当日订单 ID 容器重新分配?

好问题。一种解决方案是使用树数据结构,其中每个分支都是单独的堆分配。这就是大多数纯函数数据结构(例如 OCaml 和 F# 中的 SetMap)的工作方式,它使它们递增,因此插入和删除总是 O(log n) 最坏的情况。

【讨论】:

    猜你喜欢
    • 2010-11-17
    • 2016-02-24
    • 2012-02-03
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    相关资源
    最近更新 更多