C 優化 把頻繁操作的成員變數區域性化

2021-07-09 13:19:36 字數 1033 閱讀 5433

當我們在類成員函式中頻繁操作類成員變數時(例如,在for迴圈中反覆呼叫成員變數),我們可以把該成員變數複製到成員函式中,成為區域性變數,幫助編譯器更好的優化迴圈體,因為成員變數對編譯器來說更容易追蹤。

例如下面程式,在operator()的for迴圈中反覆呼叫成員變數m_i:

// main.cpp

#include

#include "tbb/tbb.h"

using

namespace

std;

using

namespace tbb;

#define num 100000000

class body

~body() {}

void

operator()()

}int m_i;

};int main(int argc, char** args)

執行時間大約為0.38s。

在operator()中把成員變數m_i複製到區域性變數i上:

#include 

#include "tbb/tbb.h"

using

namespace

std;

using

namespace tbb;

#define num 100000000

class body

~body() {}

void

operator()()

}int m_i;

};int main(int argc, char** args)

執行時間大約為0.35s,和沒有區域性處理相比快了0.03s,這是乙個較大的效能提高。

成員變數 類變數 區域性變數的區別

變數名首寫字母使用小寫,如果由多個單詞組成,從第2個單詞開始的其他單詞的首寫字母使用大寫。如果區域性變數的名字和成員變數的名字相同,要想在該方法中使用成員變數,必須使用關鍵字this。成員變數和區域性變數的區別 成員變數 1 成員變數定義在類中,在整個類中都可以被訪問。2 成員變數隨著物件的建立而建...

成員變數 類變數 區域性變數的區別

變數名首寫字母使用小寫,如果由多個單詞組成,從第2個單詞開始的其他單詞的首寫字母使用大寫。如果區域性變數的名字和成員變數的名字相同,要想在該方法中使用成員變數,必須使用關鍵字this class people public void speak public class testthis 輸出結果 ...

成員變數 類變數 區域性變數的區別

成員變數 類變數 區域性變數的區別 變數名首寫字母使用小寫,如果由多個單詞組成,從第2個單詞開始的其他單詞的首寫字母使用大寫。如果區域性變數的名字和成員變數的名字相同,要想在該方法中使用成員變數,必須使用關鍵字this class people public void speak public cl...