CH9.3/9.4 優(yōu)化cache

如何利用cache
code
  1. 把一起使用的代碼放在有一塊比吭,把經(jīng)常使用的代碼放在一塊逞怨;這里的“一起使用”是指翻譯之后的捌省,即匯編代碼要在一塊,通常情況下互订,匯編代碼是和源代碼差不多順序的吱肌。
  2. 把不常用到的代碼,比如異常處理放在代碼(函數(shù))的最后仰禽,或者另外使用一個(gè)函數(shù)氮墨。
  3. 對(duì)于跨文件的情況, 比如子類(lèi)一個(gè)文件吐葵,父類(lèi)一個(gè)文件规揪,有時(shí)候子類(lèi)的函數(shù)和父類(lèi)的函數(shù)要一塊執(zhí)行,所以我們最好在link的時(shí)候把他們組織在一塊温峭;
    怎么組織呢猛铅,通常來(lái)講文件link的順序就是他們?cè)趍akefile中出現(xiàn)的順序》锊兀可以通過(guò)查找map file 來(lái)看每個(gè)函數(shù)在內(nèi)存的什么位置奸忽。
Variable
  1. 函數(shù)中用到的變量要在函數(shù)中聲明,因?yàn)楹瘮?shù)中聲明的變量(非動(dòng)態(tài)分配的內(nèi)存)是放在堆棧中的揖庄,我們知道堆棧中的數(shù)據(jù)是連續(xù)的栗菜,這給我們cache提供了良好的數(shù)據(jù)結(jié)構(gòu)(動(dòng)態(tài)分配的內(nèi)存不是放在堆棧中,而是分布在內(nèi)存的各個(gè)部分)抠艾。

  2. 面向?qū)ο笳Z(yǔ)言可以很好的組織數(shù)據(jù)苛萎,因?yàn)橐粋€(gè)對(duì)象里的數(shù)據(jù)肯定是連續(xù)存放的。

  3. 如果我們循環(huán)訪問(wèn)多個(gè)數(shù)組的相同位置检号,我們我們可以重新組織數(shù)據(jù),時(shí)期訪問(wèn)連續(xù)蛙酪。重新組織的方法有兩個(gè):合并數(shù)組和使用structa齐苛。
    例如:如下代碼訪問(wèn)a、b數(shù)組

    int Func(int);
    const int size = 1024;
    int a[size], b[size], i;
    ...
    for(i=0; i<size; i++){
        b[i] = Func(a[i]);
    }
    

    上述代碼訪問(wèn)a和b數(shù)組的對(duì)應(yīng)位置桂塞。為了使訪存連續(xù)凹蜂,我們可以利用struct來(lái)組織數(shù)據(jù)結(jié)構(gòu),聲明struct不會(huì)有額外消耗。

    int Func(int);
    const int size = 1024;
    struct Sab {int a; int b};
    Sab ab[size];
    int i;
    ...
    for(i=0; i<size; i++){
        ab[i].a = Func(ab[i].b);
    }
    

    上面代碼有三個(gè)好處:(1) 數(shù)據(jù)訪問(wèn)時(shí)連續(xù)的; (2) 聲明struct不會(huì)產(chǎn)生額外的開(kāi)銷(xiāo); (3) 程序只需訪問(wèn)一個(gè)數(shù)組而不是兩個(gè)玛痊。

    然后經(jīng)過(guò)我的測(cè)試汰瘫,上述代碼不會(huì)并沒(méi)有產(chǎn)生性能提升。擂煞。混弥。。

  4. 如果我們可以根據(jù)條件選擇不同的數(shù)據(jù)類(lèi)型对省,我們可以使用union來(lái)節(jié)省一半空間蝗拿。如下所示:

    void F1(int x[]);
    void F2(float x[]);
    void F3(bool y) {
      if (y) {
        int a[1000];
        F1(a);
      }
      else {
        float b[1000];
        F2(b);
      }
    } 
    

    我們到a 和 b 數(shù)組只能用一個(gè),所以用union可以更節(jié)省空間蒿涎。

    void F3(bool y) {
      union {
        int a[1000];
        float b[1000];
      };
      if (y) {
        F1(a);
      }
      else {
        F2(b);
      }
    }
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哀托,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子劳秋,更是在濱河造成了極大的恐慌仓手,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玻淑,死亡現(xiàn)場(chǎng)離奇詭異嗽冒,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)岁忘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)辛慰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人干像,你說(shuō)我怎么就攤上這事帅腌。” “怎么了麻汰?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵速客,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我五鲫,道長(zhǎng)溺职,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任位喂,我火速辦了婚禮浪耘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘塑崖。我一直安慰自己七冲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布规婆。 她就那樣靜靜地躺著澜躺,像睡著了一般蝉稳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上掘鄙,一...
    開(kāi)封第一講書(shū)人閱讀 52,682評(píng)論 1 312
  • 那天耘戚,我揣著相機(jī)與錄音,去河邊找鬼操漠。 笑死收津,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的颅夺。 我是一名探鬼主播朋截,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼吧黄!你這毒婦竟也來(lái)了部服?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拗慨,失蹤者是張志新(化名)和其女友劉穎廓八,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體赵抢,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡剧蹂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了烦却。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宠叼。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖其爵,靈堂內(nèi)的尸體忽然破棺而出冒冬,到底是詐尸還是另有隱情,我是刑警寧澤摩渺,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布简烤,位于F島的核電站,受9級(jí)特大地震影響摇幻,放射性物質(zhì)發(fā)生泄漏横侦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一绰姻、第九天 我趴在偏房一處隱蔽的房頂上張望枉侧。 院中可真熱鬧,春花似錦狂芋、人聲如沸棵逊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)辆影。三九已至,卻和暖如春黍特,著一層夾襖步出監(jiān)牢的瞬間蛙讥,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工灭衷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留次慢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓翔曲,卻偏偏與公主長(zhǎng)得像迫像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瞳遍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容