java转换为c#_C#vs Java哪一个更快? 将25k C#转换为Java(2)
java轉換為c#
在上一篇文章中,我描述了如何將25k行C#轉換為Java以及從該練習中學到的教訓。
我收到以下問題:
順便說一句很棒的文章。 移植代碼后,性能與C#版本相比如何?
改寫系統的動機之一是使系統運行更快,而實際上已實現了這一目標。 我們設法將硬件數量減少了5倍,同時仍將系統的吞吐量提高了6倍。這給客戶帶來了很多好處。
最初的假設是C#實際上并不比Java慢,并且我們必須實現一些高級技術才能獲得顯著的性能提升。 發生這種情況時,只需重新編寫系統即可獲得收益。
那么C#比Java慢嗎? 一言以蔽之。 盡管我沒有在可比較的硬件上運行任何正式的基準測試,但我的軼事證據是,在類似情況下,性能是可比的。 但是我發現確實很容易在C#中圍繞數據訪問構建一個錯誤的系統。
C#和SqlServer之間存在極其緊密的聯系。 Visual Studio實際上是這兩者的前端。 有趣的是,我遇到的C#開發人員與SQLServer一樣精通C#。 畢竟,幾乎所有系統都需要處理存儲在數據庫中的數據,這聽起來不錯,因此兩者之間的緊密集成應該是可行的方法。 好吧,是的,不是。 擁有出色的工具和技能以使您能夠訪問和操縱數據非常好,但絕不能忘記“數據聊天”的性能成本。
我正在使用的系統的主要問題是數據訪問已緊密集成到代碼中。 每當需要一條數據時,都會調用數據庫。 實際上,在某些情況下,可以在代碼中執行的邏輯是在SQLServer的存儲過程中執行的。 只要計算出結果,就將其寫回到數據庫中。 不僅效率極低,而且使系統更難以理解。
我們要做的第一件事是在數據和代碼之間建立清晰的分隔。 使用bcp從數據庫中批量導出了程序運行所需的所有數據,這些文件用于創建保存在程序存儲器中的對象。 一旦計算出所有結果,它們就會寫入文件,然后bcp備份到數據庫中。 這消除了程序與服務器之間不斷的“閑聊”,并極大地加快了系統速度。 這也使系統的輸入和輸出非常透明。 將數據庫調用掩埋在代碼中會使輸入和輸出變得相當不透明。
因為我們使用的是Java,并且無法訪問與SQLServer的緊密耦合,所以我們被迫遵循一項關鍵的良好實踐,即“從處理過程中分離數據”。 這是實現性能改進的關鍵。
所有這些都不表示C#,SQLServer和Visual Studio之間的集成是一件壞事。 實際上,恰恰相反,它是一個非常強大的工具,與所有強大工具一樣,如果不加理解和小心處理,可能會很危險。
翻譯自: https://www.javacodegeeks.com/2015/05/c-vs-java-which-one-is-faster-translating-25k-c-into-java-2.html
java轉換為c#
總結
以上是生活随笔為你收集整理的java转换为c#_C#vs Java哪一个更快? 将25k C#转换为Java(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svn: 没有演进历程信息_使用默认方法
- 下一篇: c# char unsigned_dll