為什麼Java在高速交易系統上比C ++更好? -efinancialcareers

banq發表於2020-11-27

公認的智慧是,如果您要構建一個高速交易系統,則可能要使用C ++而不是Java: 它更接近底層,因此速度更快(延遲更短)。但是,該行業中的一些領先人物表示不同意。 
Chronicle Software的執行長Peter Lawrey知道有關低延遲程式設計的一兩件事。勞瑞(Lawrey)是巴克萊(Barclays)的前一名交易績效工程師,以及對沖基金Millennium Management的 開發人員/研究員。他於2013年創立了Chronicle,致力於高速交易系統。該公司擁有10家一級投資銀行 和多家大型對沖基金客戶。
從歷史上看,Chronicle為希望建立低延遲交易系統的客戶提供諮詢服務。但是,最近它的重點是提供諮詢服務,並將其稱為“通用的可定製[交易]基礎結構”包,以供客戶迭代。該軟體包使用Java編碼。
Lawrey說:“如果您有無限的時間和資源,那麼最好的速度解決方案將用FPGA編碼。” Lawrey指的是直接編碼現場可程式設計門陣列的語言。“如果您仍然有很多時間和資源,並且想要建立多個交換介面卡,則可以選擇C ++。-但是,如果您想參與20多個交換,可以迅速推向市場,並進行持續的效能調整,您將選擇Java。”
Lawrey說,C ++的問題在於它的易失性:“如果您不是一個好的C ++程式設計師,那麼您會全力無意識地將整個專案推向崩潰。” 舉例來說,勞裡(Lawrey)指出了他在一家投資銀行遇到的系統。它是用C ++編寫的,並且應該很快,但是Lawrey說,銀行的開發人員團隊將大部分時間都花在了崩潰報告上,並試圖重新猜測C ++出了什麼問題。因此,他說,在Java上執行的系統元素要快得多。他說:“他們正在用Java新增指標,以瞭解C ++系統將要做什麼。” “這是我職業生涯中最落後的事情之一。”  
但是,這並不意味著所有Java程式碼都很快。Chronicle的系統是建立在Lawrey描述為“類似於C的Java”的基礎上的,他鼓勵人們在其中編寫低延遲系統。 
Lawrey說:“我們的編碼方式更像C ++,而不是Java。” “從本質上講,我們使用人為設計的Java形式,避免了所有使事情變慢的Java構造。我們僅使用快速高效的構造,並且避免了所有垃圾。” Lawrey說,透過簡化Java並切換到非常低階的程式碼,可以大大加快工作速度。有時,這僅僅是一個更好的診斷問題:“透過簡單地更改程式碼的配置,我們已經能夠將99.9%的延遲減少25倍。” 
 
低延遲Java的唯一問題是,大多數經驗豐富的Java程式設計師都在努力應對新的範例。Lawrey說:“許多使用Java程式設計的人習慣於在延遲不是標準的環境中工作。” “他們可能有15到20年的經驗,但是他們對低階程式碼不瞭解,只對需要發生的最重要的事情沒有思想。” 
Chronicle以這種低階Java形式指導客戶自己的開發人員。它還僱用了十名自己的Java專業開發人員,並且將在全球範圍內推廣其平臺時尋求進一步的擴充套件。勞裡說,這種對類似於C的Java的重視可能使其難以招募。他說:“我們首先從交易大廳僱用人員,但最近又僱用了碩士和博士學位的學生。”
即便如此,許多接近《紀事報》的候選人都不適合這份工作。Lawrey說:“大多數Java開發人員都是Web開發人員,習慣於對他們可以看到的東西進行建模。” “但是在交易系統中,您關心的是看不到的延遲,它們甚至都不是典型的延遲-即使是一毫秒也很重要。工作是非常理論化和抽象化的,很難直觀地看到這是怎麼回事。” 
 

相關文章