C 中關於效率的討論(一)

2021-08-19 10:13:43 字數 1143 閱讀 5537

date 218/04/26  by  wjb

接觸c++將近一年了,自己一直在用心學習,但是總感覺自己的知識儲備太少了,心裡沒有關於架構的觀念,效率也不考慮,功能只要實現了感覺就完成任務了。而效率是開發的關鍵,我總在抱怨語言限制,認真想象還是自己技術不到家,接下來和大家討論一些關於效率的問題。

今天首先說一下vecor和list

vector實質是個陣列,記憶體是連續的,所以vector在儲存時只需要挨個放置就可以了,而list是乙個鍊錶,記憶體不連續,存放資料需要先關聯前乙個資料,這樣花費了更多的時間。用事實說話,**測試,為了簡單我使用了qt;

首先在標頭檔案宣告兩個物件和乙個方法(寫**時記得包含相應的標頭檔案)

void generatedata();

qvectorm_vector_data;

qlistm_list_data;

在cpp檔案中實現generatedata方法,同時列印執行時間

void generatedata()

}qdebug() << "time1" << time1.elapsed();

qtime time2;

time2.start();

for (int i = 0; i < 1000; i++)

}qdebug() << "time2" << time2.elapsed();

qtime time3;

time3.start();

m_list_data.tovector();

qdebug() << "time3" << time3.elapsed();

}一千萬資料量的測試 如果去掉m_vector_data.push_back(point)和m_list_data.push_back(point)這兩句兩個迴圈時間時一樣的

time1 51

time2 51

time3 0

一千萬的迴圈51毫秒 速度還是可以的,我的電腦時固態硬碟,i7處理器,這個時間肯定和電腦配置有關係的。

新增兩句**執行的結果為

time1 661

time2 2180

time3 795

納尼!!!!!!!!!!!!!三倍還要多 不要濫用 tovector(), 很浪費時間的。

今天先到這裡,希望大家提出更好的建議。

就關於if語句執行效率討論

做程式和維護的工程師,都知道if語句都是基本的使用,今天就if和if elif使用簡單討論,直接進入正題 程式1for i in range 100 if i 50 print i elif i 40 print i 程式2for i in range 100 if i 50 print i if ...

關於C 中函式返回引用的討論

從函式返回引用 確保其引用的物件在函式執行完後仍然存在。引用型別返回值的主要特徵是可以作為左值,這意味著我們可以在賦值語句的左邊使用返回引用的函式的結果。永遠不要從函式中返回區域性變數的引用 c 中,返回引用是乙個比較晦澀的概念。在書中,對此僅僅做了乙個一般的介紹,並沒有展開。我覺得有必要對此進行一...

關於C 中函式返回引用的討論

從函式 返回引用 確保其引用的物件在函式執行完後仍然存在。引用型別返回值的主要特徵是可以作為左值,這意味著我們可以在賦值語句的左邊使用返回引用的函式的結果。永遠不要從函式中返回區域性變數的引用.1 首先,返回引用,要求在函式的引數中,包含有以 引用方式或 指標方式存在的,需要被返回的引數。比如 in...