久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

亂彈ASM/C/C++/Java/C#效率

 mtjs 2010-03-03
效率主要有執(zhí)行效率和開(kāi)發(fā)效率兩個(gè)方面。
 
這幾種語(yǔ)言的開(kāi)發(fā)效率普遍是這樣認(rèn)為的:Java≈C#>C++>C>ASM.
 
C#,Java的開(kāi)發(fā)效率高的主要原因是因?yàn)槎弑举|(zhì)上都是解釋型語(yǔ)言,,而不是編譯型語(yǔ)言,。解釋性語(yǔ)言可以利用很多解釋型語(yǔ)言專(zhuān)有的特性,如自動(dòng)垃圾收集,,虛擬機(jī)提供的一些特殊的功能,,比如反射等。以此加快開(kāi)發(fā)速度,。第二個(gè)原因是二者都是較徹底的面向?qū)ο蟮恼Z(yǔ)言,,而面向?qū)ο笤陂_(kāi)發(fā)大型系統(tǒng)時(shí)結(jié)構(gòu)更清晰,更容易開(kāi)發(fā),,更容易維護(hù),。
 
C++也是一門(mén)面向?qū)ο蟮恼Z(yǔ)言,不過(guò)考慮到執(zhí)行效率和為了保持和C的兼容性,,造成語(yǔ)言的難學(xué)難用難以控制,,而造成開(kāi)發(fā)難度較大。
 
C是較底層的開(kāi)發(fā)語(yǔ)言,,是面向過(guò)程的一門(mén)語(yǔ)言,,較適合于底層開(kāi)發(fā)。ASM也是底層開(kāi)發(fā),,只在對(duì)效率嚴(yán)格追求時(shí)或用C實(shí)現(xiàn)有困難時(shí)使用,,其開(kāi)發(fā)效率是最低的,但是執(zhí)行效率最高,。
 
不過(guò)這只是一般情況,,實(shí)際情況經(jīng)常是開(kāi)發(fā)難度經(jīng)常是有人決定的,一個(gè)蹩腳的Java程序員決不可能比高明的C程序員開(kāi)發(fā)效率高,。
 
關(guān)于執(zhí)行效率普遍是這樣認(rèn)為的ASM>C>C++>C#>Java,。
 
首先應(yīng)該明確以下幾點(diǎn)原則:
1、執(zhí)行效率主要取決于算法的設(shè)計(jì),,因?yàn)橐粋€(gè)好的算法通常是幾個(gè)數(shù)量級(jí)的增加執(zhí)行效率,,遠(yuǎn)遠(yuǎn)大于由于語(yǔ)言不同帶來(lái)的效率差別,。
2、執(zhí)行效率還主要取決了系統(tǒng)的構(gòu)架,,系統(tǒng)的設(shè)計(jì),。一個(gè)好的設(shè)計(jì)可以充分利用系統(tǒng)的資源,可以充分利用語(yǔ)言的優(yōu)點(diǎn),。
 
 
程序運(yùn)行時(shí)所有的語(yǔ)言最終都是要轉(zhuǎn)化成為機(jī)器指令,。機(jī)器語(yǔ)言和ASM是一一對(duì)應(yīng)的,所以ASM編寫(xiě)的程序可以達(dá)到最快的運(yùn)行效率,。然而和C相比,,因?yàn)楝F(xiàn)在的編譯器優(yōu)化已經(jīng)提高很大,一個(gè)普通的ASM程序員的編寫(xiě)出來(lái)的程序的執(zhí)行效率未必一定比C的高,。
C++在設(shè)計(jì)時(shí)就充分考慮到了執(zhí)行效率,,設(shè)計(jì)的時(shí)候摳點(diǎn),編程的時(shí)候小心點(diǎn),,你寫(xiě)出來(lái)的程序執(zhí)行效率并不會(huì)比C慢,。
Java和C#本質(zhì)上時(shí)解釋型語(yǔ)言,,中間隔著一層虛擬機(jī),,執(zhí)行時(shí)要通過(guò)虛擬機(jī)這一層,故執(zhí)行效率一般比不上C/C++,。
 
關(guān)于C++和Java/C#的執(zhí)行效率比較:上面說(shuō)了C++的執(zhí)行效率比Java快,,不過(guò)如果在普通情況下編寫(xiě)程序也未必,這是因?yàn)椋?/div>
1,、虛擬機(jī)使用了復(fù)雜的算法可以提高效率,,而C++程序編寫(xiě)時(shí)一般不會(huì)使用如此復(fù)雜的算法。比如好的垃圾收集算法,,如Java/C#是成批垃圾收集的等,。上面說(shuō)了,算法才可以極大的提高執(zhí)行效率,,所以?xún)蓚€(gè)水平相同的程序執(zhí)行效率并不會(huì)相差很大,。Java/C#未必比C++/C慢。
2,、現(xiàn)在Java/C#執(zhí)行都是通過(guò)一種即時(shí)編譯(JIT)方式執(zhí)行,,執(zhí)行時(shí)動(dòng)態(tài)編譯成本地代碼,所以在運(yùn)行期間Java的程序不會(huì)比C/C++的慢,。并且動(dòng)態(tài)編譯時(shí)可以充分利用硬件的特點(diǎn)優(yōu)化編譯,,從而可以獲得比C++編譯碼時(shí)更快的執(zhí)行碼。
 
值得一提的是C#各個(gè)方面其實(shí)和Java幾乎一樣,,不過(guò)C#基于的(CLR)中間語(yǔ)言運(yùn)行環(huán)境設(shè)計(jì)時(shí)更充分的考慮了執(zhí)行效率,,底層設(shè)計(jì)比JVM更為復(fù)雜,,執(zhí)行效率更高,并且CLR有把一部分中間語(yǔ)言運(yùn)行庫(kù)(CIL)預(yù)先編譯成本地代碼從而更快的提高了執(zhí)行效率,。Java在這一方面做的不足,。當(dāng)然因?yàn)镃#是Java的改良,所以可以借鑒Java的優(yōu)點(diǎn),,回避和彌補(bǔ)Java的缺點(diǎn),。
 
最后總結(jié)一句話(huà),效率是由人決定的,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多