C程序員經(jīng)常抵制C++在高性能應(yīng)用程序中的使用。他們聲稱C++語言本質(zhì)上比C語言或類似的過程語言低效,因為C++包含了高層次的概念,例如異常和虛擬方法。然而,這種方法是有問題的。
首先,不能忽略編譯器的作用。在討論語言效率時,必須把語言的性能和編譯器優(yōu)化這個語言的效果分離。計算機(jī)執(zhí)行的并不是C或C++代碼。編譯器首先將這個代碼轉(zhuǎn)換成機(jī)器語言,并在這個過程中進(jìn)行優(yōu)化。這意味著,不能簡單地運行C和C++語言的基準(zhǔn)測試并比較結(jié)果。這實際上比較的編譯器優(yōu)化語言的效果,而不是語言本身。C++編譯器可以優(yōu)化掉語言中很多高層次的結(jié)構(gòu),來生成類似于C語言生成的機(jī)器碼。
然而,批評者仍然認(rèn)為一些C++特性不能被優(yōu)化掉。例如,虛擬方法需要存在一個vtable,在運行時需要添加一個間接層次,因而比普通的非虛擬函數(shù)調(diào)用慢。然而,如果仔細(xì)思考,會發(fā)現(xiàn)這種說法仍然難以令人信服。虛擬方法調(diào)用不止是一個函數(shù)調(diào)用:還要在運行時選擇調(diào)用哪個函數(shù)。對應(yīng)的非虛擬函數(shù)。C++語言的一般設(shè)計原則是:“如果不使用,則不需要付出代價?!比绻皇褂锰摂M方法,那么不會因為能夠使用虛擬方法而損失性能。因此,在C++中非虛函數(shù)的調(diào)用在性能上等同于C語言中的函數(shù)調(diào)用。然而,由于虛函數(shù)調(diào)用有一個這么小的開銷,因此建議將所有的類方法,包括析構(gòu)造函數(shù),設(shè)計為虛擬方法。
更重要的是,通過C++高層次的結(jié)構(gòu)允許編寫更干凈的程序,這些程序在設(shè)計的層次更加高效,更容易維護(hù),避免積累不必要的代碼和死代碼。
我們相信,如果選擇C++語言而不是過程式的語言,在開發(fā)、性能和維護(hù)上會有更好的結(jié)果。
★關(guān)于WorkWin公司電腦監(jiān)控軟件★
WorkWin的使命是打造Work用途的Windows 電腦系統(tǒng),有效規(guī)范員工上網(wǎng)行為,讓老板知道員工每天在做什么(監(jiān)控包括屏幕、上網(wǎng)在內(nèi)的一舉一動),限制員工不能做什么(禁止網(wǎng)購、游戲、優(yōu)盤等)。
WorkWin基于純軟件設(shè)計,非常容易使用,無需添加或改動任何硬件,使用一臺管理機(jī)監(jiān)控全部員工機(jī)電腦。歷經(jīng)南京網(wǎng)亞十余年精心打造,此時此刻每天都有成千上萬企業(yè)電腦正在運行WorkWin,選擇WorkWin選擇“贏”。
WorkWin監(jiān)控首頁 短視頻講解 下載免費試用版
版權(quán)所有,南京網(wǎng)亞計算機(jī)有限公司 。本文鏈接地址: C++是不是低效的語言