std move效能測試和應用範例

2021-08-28 02:58:15 字數 1747 閱讀 9183

參考

直接上**和執行結果

#include 

#include

#include

using

namespace

std;

const

int kruntime = 1000*1000; // 迴圈次數

const

int kstringlength = 100000; // 字串長度

void createstr(string& str)

std::string getstr(string& str)

std::string getstr2(string& str)

int main()

gettimeofday(&et, null);

cout

<< "use std::move, time:"

<< (et.tv_sec-st.tv_sec)*1000 + (et.tv_usec-st.tv_usec)/1000

<< "ms"

<< endl;

// 從這裡列印mov_str.size = 0我們也可以看到被move的物件不能再被使用,因為其記憶體空間已經被轉移到其他物件。

cout

<< "mov_str.size = "

<< mov_str.size() << endl << endl;

gettimeofday(&st, null);

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

gettimeofday(&et, null);

cout

<< "return directly in function, time:"

<< (et.tv_sec-st.tv_sec)*1000 + (et.tv_usec-st.tv_usec)/1000

<< "ms"

<< endl;

cout

<< "mov_str.size = "

<< mov_str.size() << endl << endl;

gettimeofday(&st, null);

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

gettimeofday(&et, null);

cout

<< "use assgin after function, time:"

<< (et.tv_sec-st.tv_sec)*1000 + (et.tv_usec-st.tv_usec)/1000

<< "ms"

<< endl;

cout

<< "mov_str.size = "

<< mov_str.size() << endl;

return

0;}

test string len = 100000, loop times = 1000000

use std::move, time:57ms

return directly in

function, time:6513ms

use assgin after

function, time:7561ms

在函式內使用std::move返回,函式返回時仍用std::move賦值。

但是某物件在被使用std::move後,不能再正常地使用它。

[1] string move正確用法與效能測試

Matrix效能測試應用

matrix android 當前監控範圍包括 應用安裝包大小,幀率變化,啟動耗時,卡頓,慢方法,sqlite 操作優化,檔案讀寫,記憶體洩漏等等。目前實際接入matrix 0.6.0版本apk checker trace canary apk checker接入相對比較簡單,根據git上介紹,配置...

效能測試應用領域

軟體效能測試過程詳解與案例分析 段念 編著 學習筆記五 能力驗證 乙個典型的能力驗證問題會採用這樣的描述方式 某系統能否在a條件下具有b能力?舉例來說,我們為客戶進行系統上線後的驗收測試,或是作為第三方對乙個已經部署系統的效能進行驗證,都屬於這種效能測試應用領域內的測試 在給定條件下,系統能否具有預...

效能測試應用領域

軟體效能測試過程詳解與案例分析 段念 編著 學習筆記五 能力驗證 乙個典型的能力驗證問題會採用這樣的描述方式 某系統能否在a條件下具有b能力?舉例來說,我們為客戶進行系統上線後的驗收測試,或是作為第三方對乙個已經部署系統的效能進行驗證,都屬於這種效能測試應用領域內的測試 在給定條件下,系統能否具有預...