為什麼Java在高速交易系統上比C ++更好? -efinancialcareers
公認的智慧是,如果您要構建一個高速交易系統,則可能要使用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開發人員,習慣於對他們可以看到的東西進行建模。” “但是在交易系統中,您關心的是看不到的延遲,它們甚至都不是典型的延遲-即使是一毫秒也很重要。工作是非常理論化和抽象化的,很難直觀地看到這是怎麼回事。”
相關文章
- 為什麼REST比GraphQL更好? - TomaszJaskuλaREST
- C++中為什麼使用指標比使用物件本身更好?C++指標物件
- 在什麼情況下Java比C++快?JavaC++
- 為什麼使用指標比使用物件本身更好?指標物件
- 在什麼情況下,Java比C++慢很多?JavaC++
- 為什麼Kotlin比任何愚蠢的語言更好Kotlin
- 什麼樣的CRM系統更好用?
- 為什麼 APISIX Ingress 是比 Traefik 更好的選擇?API
- 馬丁量化交易系統在運營時有什麼特點
- 為什麼要上BI視覺化系統?視覺化
- 在linux系統上裝oracle為什麼要修改作業系統的核心引數LinuxOracle作業系統
- 為什麼iPhone拍照更好看iPhone
- 現在正火的秒合約交易系統到底是什麼?
- 企業為什麼要上管理系統軟體
- 為什麼python比c更簡單Python
- 為什麼 APISIX Ingress 是比 Ingress NGINX 更好的選擇?APINginx
- 系統為什麼會在執行時當機
- 蘋果mac電腦為什麼比win系統更安全呢?蘋果Mac
- 為什麼說無程式碼開發比低程式碼開發更好?
- 為什麼java中用列舉實現單例模式會更好Java單例模式
- Linux系統和Windows系統對比?哪個更好?LinuxWindows
- 為什麼軟體測試外包更好?
- 為什麼學習Python?使用哪個系統比較好?Python
- Vite為何比Webpack更好?ViteWeb
- 為什麼要使用CRM系統?
- 為什麼選擇centos系統CentOS
- 到底cms企業建站系統是什麼?為什麼要做cms系統?
- 為什麼選擇Java語言用作高頻交易?-JadJava
- 在公鏈專案早期,為什麼PoW是一個更好選擇?
- 為什麼在 Plasma 上難以執行 EVMASM
- 什麼樣的CRM管理系統操作更好操作更簡單?
- 企業為什麼要上ERP?SAP系統好在哪裡?
- java FileI(O)nputStream為什麼比BufferedI(O)utputStream慢?Java
- [譯]為什麼你的 APP 在 Sketch 上看起來更好: 探索 Sketch 和 iOS 的渲染差異APPiOS
- 為什麼《夢幻西遊》能這麼長壽(二):拆解其交易系統的高深之處
- 微軟為什麼會在Windows 10刪除系統控制皮膚微軟Windows
- C++ 的 cin/cout 為什麼比 C 語言的 scanf/printf 慢C++
- 企業為什麼需要CRM系統