[英]C++/Java Performance for Neural Networks?
前幾天我和一位朋友在午餐時討論神經網絡(NN),他聲稱用Java編寫的NN的性能類似於用C ++編寫的。 我知道,通過'及時'編譯技術,Java可以做得很好,但不知怎的,我只是不買它。 有沒有人有經驗可以解釋這個問題? 這個頁面是我對這個主題的閱讀程度。
我對Hotspot JIT和配置文件引導優化優化的C ++之間的比較感興趣。
我在Hotspot JIT(以及任何運行時配置文件優化的JIT編譯器)中看到的問題是必須保留統計信息並修改代碼。 雖然存在孤立的情況,但這會導致代碼運行速度更快,我懷疑在大多數情況下,配置文件優化的JIT編譯器運行速度要比優化良好的C或C ++代碼快。 (當然我可能是錯的。)
無論如何,通常你會受到更大項目的支配,使用與其相同的語言。或者你將受到同事知識庫的支配。 或者你將受到你所針對的平台的支配(是你目標的架構上可用的JVM嗎?)。 在極少數情況下,您擁有完全的自由並且熟悉這兩種語言,請與您可以使用的工具進行一些比較。 這確實是確定什么是最好的唯一方法。
唯一可能的答案是:制作原型並自己測量。 如果我的經驗有任何興趣,那么Java和C#總是比C ++慢得多,因為我正在做的工作 - 我相信主要是因為內存消耗很高。 當然,你可以得出一個完全不同的結論。
可能是C ++,雖然我相信除了緩慢的啟動時間之外你幾乎不會注意到它的差異。 然而,Java使開發更快,維護更容易。
如果需要考慮過多的垃圾收集,則可以始終重用未使用的高流失對象。
創建一個工廠,將SoftReferences隊列保存到回收對象,在創建新對象之前使用這些對象。 然后在使用這些對象的代碼中,將這些對象顯式返回工廠進行回收。
在宏觀方案中,你可能會爭論5%的性能差異,你可以通過遷移到CUDA或專用硬件來獲得幾個數量級的增長。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.