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