为什么Java在高速交易系统上优于C ++

2020-11-26 14:36:39

公认的智慧是,如果您要构建一个高速交易系统,则可能要使用C ++而不是Java:它离金属更近,因此速度更快(延迟更短)。但是,该行业中的一些领先人物表示不同意。

Chronicle Software的首席执行官Peter Lawrey知道有关低延迟编程的一两件事。劳瑞(Lawrey)是巴克莱(Barclays)的前一名交易绩效工程师,以及对冲基金Millennium Management的开发人员/研究员。他于2013年创立了Chronicle,致力于高速交易系统。该公司拥有十家第一级投资银行和多家大型对冲基金。客户。

从历史上看,Chronicle为希望建立低延迟交易系统的客户提供咨询服务。但是,最近它的重点是提供咨询服务,并将其描述为供客户迭代的“通用可定制[交易]基础架构”软件包。这个包是用Java编码的。

Lawrey说:“如果您有无限的时间和资源,那么最好的速度解决方案将用FPGA进行编码。” “如果您还有很多时间和资源,并且想要创建多个交换适配器,则可以选择C ++。-但是,如果您想与20多个交换进行互动,可以迅速进入市场并实施持续的性能调整,您将选择Java。”

劳里说:“ C ++的问题在于它的易失性。如果您不是一个真正的C ++开发人员,那么您可以全力以赴,将整个项目付诸东流。”作为示例,Lawrey指出了他在投资银行中遇到的系统。它是用C ++编写的,并且应该是快速的,但Lawrey说,银行的开发人员团队反而把大部分时间都花在了崩溃报告上,并试图再次猜测C ++的出问题之处。因此,他说在Java上运行的系统元素要快得多。他说:“他们正在用Java添加指标,以了解C ++系统将要做什么。” “这是我职业生涯中最落后的事情之一。”

但是,这并不意味着所有Java代码都很快。 Chronicle的系统内置于劳瑞所说的“类似C的Java”中,正是这一点促使他鼓励人们在其中编写低延迟的系统。

Lawrey说:“我们的编码方式更像C ++,而不是Java。” “从本质上讲,我们使用人为设计的Java形式,避免了所有使事情变慢的Java构造。我们仅使用快速高效的构造,并且避免了所有垃圾。” Lawrey说,通过简化Java并切换到非常低级的代码,可以大大加快工作速度。有时,这仅仅是一个更好的诊断问题:“通过简单地更改代码的配置,我们已经能够将99.9%的延迟减少25倍。”

低延迟Java的唯一问题是,大多数经验丰富的Java程序员都在努力应对新的范例。劳瑞说:“许多使用Java编程的人习惯于在延迟不是标准的环境中工作。” “他们可能有15到20年的经验,但是他们对低级代码不了解,只对需要发生的最重要的事情没有思想。”

Chronicle以低级Java形式指导客户自己的开发人员。它还雇用了十名自己的Java专业开发人员,并且将在全球范围内推广其平台时寻求进一步的扩展。劳里说,这种对类似于C的Java的重视会使其难以招募。他说:“我们首先从交易大厅雇用人员,但最近又雇用了硕士和博士学位的学生。”

即便如此,许多接触《纪事报》的候选人仍不适合该工作。 Lawrey说:“大多数Java开发人员都是Web开发人员,习惯于对他们可以看到的东西进行建模。” “但是在交易系统中,您关心的是看不到的延迟,它们甚至都不是典型的延迟-即使是一毫秒也很重要。工作是非常理论化和抽象化的,很难直观地看到这是怎么回事。”

有您想分享的机密故事,技巧或评论吗?请首先联系[email protected]。还提供Whatsapp / Signal / Telegram。如果您在本文底部发表评论,请与我们联系:我们的所有评论均由人类主持。有时这些人可能在睡觉或不在办公桌旁,因此可能需要一段时间才能发表您的评论。最终它将–除非冒犯或诽谤(在这种情况下不会)。