日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java高频面试_C ++或Java,高频交易哪个更快?

發布時間:2023/12/3 java 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java高频面试_C ++或Java,高频交易哪个更快? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java高頻面試

總覽

關于什么是高頻交易的最佳解決方案,存在不同意見。 問題的一部分是高頻交易的變化超出您的預期,另一部分是更快的含義。

我的看法

如果您有一個典型的Java程序員和一個典型的C ++程序員,并且每個人都有幾年編寫典型的面向對象程序的經驗,并且給了他們相同的時間,那么Java程序員可能會更早地擁有一個工作程序,并且將擁有更多的工作時間。是時候調整應用程序了。 在這種情況下,Java應用程序可能會更快。 恕我直言。

以我的經驗,Java在檢測不需要執行的代碼方面在C ++上表現更好。 esp微型基準測試,沒有任何用處。 ;)如果您以任意專業知識和時間調優Java和C ++的能力,C ++程序將更快。 但是,由于資源有限且在不斷變化的環境中,動態語言將無法運行。 即在實際應用中。

在股票空間延遲中,您需要將潛伏期定為10次以下才能使頻率很高。 不能選擇Java甚至商用硬件上的標準OOP C ++。 您需要C或C ++的簡化版本以及諸如FPGA,GPU之類的專業硬件。

在FX中,高頻意味著延遲小于100 us。 在這種情況下,可以選擇使用C ++或帶有內核旁路網絡適配器的精簡Java(低GC)。 在這種情況下,使用一種或另一種語言將有加有減。 就個人而言,我認為隨著交流的不斷變化,Java會提供更大的靈活性,前提是您認為可以利用IT獲得競爭優勢。

在許多情況下,當人們談論高頻(尤其是Banks)時,他們談論的是1 ms以下或一位數ms。 在這個領域,我想說Java,Scala或C#等的靈活性/動態編程將給您時間,與C / C ++或FPGA相比,具有可維護性和可靠性方面的優勢。


Java面臨的問題

問題不在于語言本身,而是缺乏對緩存,上下文切換和中斷的控制。 如果復制一塊內存(發生在本機內存中,但是在運行之間使用了不同的延遲),則該副本會變慢,具體取決于副本之間發生的情況。

問題不是GC或Java,因為這兩者都不起作用。 問題在于緩存的一部分已被換出,副本本身需要更長的時間。 這對于訪問內存的任何操作都是相同的。 例如訪問普通對象也將變慢。

private void doTest(Pauser delay) throws InterruptedException {int[] times = new int[1000 * 1000];byte[] bytes = new byte[32* 1024];byte[] bytes2 = new byte[32 * 1024];long end = System.nanoTime() + (long) 5e9;int i;for (i = 0; i < times.length; i++) {long start = System.nanoTime();System.arraycopy(bytes, 0, bytes2, 0, bytes.length);long time = System.nanoTime() - start;times[i] = (int) time;delay.pause();if (start > end) break;}Arrays.sort(times, 0, i);System.out.printf(delay + ": Copy memory latency 1/50/99%%tile %.1f/%.1f/%.1f us%n",times[i / 100] / 1e3,times[i / 2] / 1e3,times[i - i / 100 - 1] / 1e3); }

測試多次執行相同的操作,但執行該測試之間的延遲有所不同。 該測試將大部分時間都用在本地方法上,并且沒有像在測試期間那樣創建或丟棄任何對象。

收益:復制記憶體延遲1/50/99%tile 1.6 / 1.6 / 2.3 us
NO_WAIT:復制內存延遲1/50/99%tile 1.6 / 1.6 / 1.6 us
BUSY_WAIT_10:復制內存延遲時間為1/50/99%tile 3.1 / 3.5 / 4.4 us BUSY_WAIT_3:復制內存延遲時間為1/50/99%tile 2.7 / 3.0 / 4.0 us BUSY_WAIT_1:復制內存延遲時間為1/50/99%tile 1.6 / 1.6 / 2.6 us SLEEP_10:復制內存延遲時間為1/50/99%tile 2.3 / 3.7 / 5.2 us SLEEP_3:復制內存延遲時間為1/50/99%tile 2.7 / 4.4 / 4.8 us SLEEP_1:復制內存延遲時間為1/50/99%tile 2.8 / 4.6 / 5.0 us

執行內存復制所需的典型時間(中間值)在1.6到4.6 us之間,這取決于是否有1到10毫秒的繁忙等待或睡眠時間。 這是大約3倍的比率,與Java無關,但是它并沒有真正的控制權。 甚至最好的時間也相差約2倍。


代碼

ThreadlatencyTest.java


結論

在超高頻下,核心引擎將比OOP C ++或Java更多的C,匯編和自定義硬件。 在引擎的延遲要求不太嚴格的市場中,C ++和Low GC Java成為了選擇。 隨著等待時間要求變得不那么嚴格,Java和其他動態語言可能會變得更有效率。 在這種情況下,Java投放市場的速度更快,因此您可以利用市場/需求的變化帶來的優勢。

參考: C ++或Java,高頻交易更快? 來自我們的JCG合作伙伴 Peter Lawrey在Vanilla Java 。

相關文章:
  • Java中的低GC:使用原語而不是包裝器
  • Java Lambda語法替代
  • JVM如何處理鎖
  • Erlang與Java內存架構
  • Java Fork / Join進行并行編程
  • Java最佳實踐系列
  • 如何在Java中獲得類似于C的性能

翻譯自: https://www.javacodegeeks.com/2011/07/c-or-java-which-is-faster-for-high.html

java高頻面試

總結

以上是生活随笔為你收集整理的java高频面试_C ++或Java,高频交易哪个更快?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。