為了測試多生產者多消費者的瓶頸,寫此測試,**如下:
#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...