freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c代碼優(yōu)化經(jīng)驗(yàn)總結(jié)-資料下載頁

2025-06-25 06:21本頁面
  

【正文】 放入一個高速存儲器中,例如cache。   用register storage specifier聲明函數(shù)型參將會是建議編譯器把實(shí)參存入寄存器中 而不是堆棧中。例如:   void f(register int j, register Date d)。 3. 把那些保持不變的對象聲明為const   通過把對象聲明為const,編譯器就可以利用這個聲明把這樣一個對象放入寄存器中。 4. Virtual function的運(yùn)行期負(fù)擔(dān)   當(dāng)調(diào)用一個virtual function,如果編譯器能夠解決調(diào)用的靜態(tài)化,將不會引入額外 的負(fù)擔(dān)。另外,一個非常短的虛函數(shù)可以被內(nèi)聯(lián)處理。在下面這個例子中,一個聰明的編 譯器能夠做到靜態(tài)調(diào)用虛函數(shù):   include iostream   using namespace std。   class V   {   public:    virtual void show() const { coutI39。m Vendl。 }   }。   class W : public V   {   public:    void show() const { coutI39。m Wendl。 }   }。   void f(V amp。 v, V *pV)   {    ()。    pVshow()。   }   void g()   {    V v。    f(v, amp。v)。   }   int main()   {    g()。    return 0。   }   如果整個程序出現(xiàn)在一個單獨(dú)的編譯單元中,編譯器能夠?qū)ain()中的g()進(jìn)行內(nèi)聯(lián)替 換。并且在g()中f()的調(diào)用也能夠被內(nèi)聯(lián)處理。因?yàn)閭鹘of()的參數(shù)的動態(tài)類型能夠在編譯 期被知曉,因此編譯器能夠把對虛函數(shù)的調(diào)用靜態(tài)化。但是不能保證每個編譯器都這樣做 。然而,一些編譯器確實(shí)能夠利用在編譯期獲得參數(shù)的動態(tài)類型從而使得函數(shù)的調(diào)用在編 譯期間就確定了下來,避免了動態(tài)綁定的負(fù)擔(dān)。 5. Function objects VS function pointers 用function objects取代function pointers的好處不僅僅局限在能夠泛化和簡單的維護(hù)性 上。而且編譯器能夠?qū)unction object的函數(shù)調(diào)用進(jìn)行內(nèi)聯(lián)處理,從而進(jìn)一步的增強(qiáng)了性 能 六. 最后的求助   迄今為止為大家展示的優(yōu)化技術(shù)并沒有在設(shè)計(jì)以及代碼的可讀性上做出妥協(xié)。事實(shí)上 ,它們中的一些還提高了軟件的穩(wěn)固性和可維護(hù)性。但是在一些對時間和內(nèi)存有嚴(yán)格限制 的軟件開發(fā)中,上面的技術(shù)可能還不夠;有可能還需要一些會影響軟件的可移植性和擴(kuò)展 性的技術(shù)。但是這些技術(shù)只能在所有其他的優(yōu)化技術(shù)都被應(yīng)用但是還不符合要求的情況下 使用。 1. 關(guān)閉RTTI和異常處理支持   當(dāng)你導(dǎo)入純C代碼給C++編譯器的時候,你可能會發(fā)現(xiàn)有一些性能上的損失。這并不是 語言或者編譯器的錯誤,而是編譯器作出的一些調(diào)整。如果你想獲得和C編譯器同樣的性能 ,那么請關(guān)閉編譯器對RTTI以及異常處理的支持。為什么會這樣呢?因?yàn)闉榱酥С諶TTI和 異常處理,C++編譯器會插入額外的代碼。這樣就增加了可執(zhí)行體的大小,從而使得效率有 所下降。當(dāng)應(yīng)用純C代碼的時候,那些額外的代碼是不需要的,所以你可以通過關(guān)閉來避免 它。 2. 內(nèi)聯(lián)匯編   對時間要求苛刻的部分可以用本地匯編來重寫。結(jié)果可能是速度上的顯著提高。然而 ,這個方法不能想當(dāng)然的就去實(shí)施,因?yàn)樗鼘⑹沟脤淼男薷姆浅5睦щy。維護(hù)代碼的程 序員可能對匯編并不了解。如果想要把軟件運(yùn)行于其他平臺也需要重寫匯編代碼部分。另 外,開發(fā)和測試匯編代碼是一件辛苦的工作,它將花費(fèi)更長的時間。 3. 直接和操作系統(tǒng)進(jìn)行交互   API函數(shù)可以使你直接與操作系統(tǒng)進(jìn)行交互。有時,直接執(zhí)行一個系統(tǒng)命令可能會快許 多。出于這個目的,你可以使用標(biāo)準(zhǔn)函數(shù)system()。例如,在一個dos/windows系統(tǒng)下,你 可以這樣顯示當(dāng)前目錄下的文件:   include cstdlib   using namespace std。   int main()   {    system(dir)。 //execute the dir mand   } 注意:這里是在速度和可移植性以及可擴(kuò)展性之間做出的折衷 希望二頻的編程愛好者跟帖,談?wù)勛约旱囊娊狻?tarsen轉(zhuǎn)帖自雁塔晨鐘bbs33 / 33
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1