記憶體拷貝 鎖執行時間測試

2021-08-04 19:00:45 字數 1839 閱讀 7023

為了測試多生產者多消費者的瓶頸,寫此測試,**如下:

#include 

#include

#include

#include

#include

using

namespace

std;

#define runtime 10000000

int length = 100;

class spinlock

;spinlock::spinlock()

bool spinlock::lock()

void spinlock::unlock()

spinlock::~spinlock()

bool spinlock::init()

else }

spinlock lock;

int assign_data;

void* runlock(void *)

return null;

}int main()

gettimeofday(&single_time_end, null);

cout

<< "single cmd run "

<< runtime << " times, cost:"

<<

(single_time_end.tv_sec-single_time_start.tv_sec)*1000000+(single_time_end.tv_usec-single_time_start.tv_usec) << "us"

<< endl;

//測試記憶體拷貝時間隨拷貝長度變化的變化

for(int i = 0; i < 4; ++i, length*=10)

gettimeofday(&cpy_time_end, null);

cout

<< "memcpy "

<< length << " data "

<< runtime << " times, cost:"

<<

(cpy_time_end.tv_sec-cpy_time_start.tv_sec)*1000000+(cpy_time_end.tv_usec-cpy_time_start.tv_usec) << "us"

<< endl;

} pthread_t pid;

pthread_create(&pid, null, runlock, null);

pthread_detach(pid);

//測試自旋鎖耗時,可將其修改為互斥鎖,當鎖內執行操作簡單時自旋鎖速度快的多,本例中接近1/2

gettimeofday(&lock_time_start, null);

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

gettimeofday(&lock_time_end, null);

cout

<< "lock "

<< runtime << " times, cost:"

<<

(lock_time_end.tv_sec-lock_time_start.tv_sec)*1000000+(lock_time_end.tv_usec-lock_time_start.tv_usec) << "us"

<< endl;

pthread_join(pid, null);

return

0;}

執行結果:

從中可以看出當拷貝長度超過10000位元組時,記憶體拷貝耗時比鎖切換要大。

SQL執行時間測試

測試sql執行時間的一種方法。測試時間執行 declare begin date datetime declare end date datetime select begin date getdate 放入執行sql的語句 select end date getdate select datedi...

測試程式執行時間 time h

1 計時 c c 中的計時函式是clock 而與其相關的資料型別是clock t。在msdn中,查得對clock函式定義如下 clock t clock void 這個函式返回從 開啟這個程式程序 到 程式中呼叫clock 函式 時之間的cpu時鐘計時單元 clock tick 數,在msdn中稱之...

Python語句執行時間測試

可以使用timeit模組中的timer物件來實現。timer接收兩個引數,第乙個引數是 多次執行的語句 第二個引數是 只在開始執行一次的語句 coding utf 8 from timeit import timer pre statement list1 range 10000000 set1 s...