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...