C 11 毫秒時間

2021-07-25 16:44:59 字數 1370 閱讀 7002

計時有很多用途,比如:測試某一段**的執行時間,時間越短,則效能相對越高。計時有很多方法,我將首先給出我以前常用的一種計時方法,然後給出我認為的最佳方法(採用了c++11的標準技術)。

首先給出我以前常用的一種「傳統」的計時方法:

#include using namespace std;

clock_t start = clock();

// do something...

clock_t end = clock();

cout << "花費了" << (double)(end - start) / clocks_per_sec << "秒" << endl;

#include using namespace std;

using namespace chrono;

auto start = system_clock::now();

// do something...

auto end = system_clock::now();

auto duration = duration_cast(end - start);

cout << "花費了"

<< double(duration.count()) * microseconds::period::num / microseconds::period::den

<< "秒" << endl;

此方法可以精確到微妙,輸出樣例:花費了0.123456秒

system_clock是 c++11 提供的乙個 clock。除此之外,還有兩個clock:steady_clock 和 high_resolution_clock

now( )表示計時的那「一瞬間」

duration_cast< >表示型別轉換

microseconds表示微妙。除此之外,還有五種時間單位:hours, minutes, seconds, milliseconds, nanoseconds

numden分別表示分子(numerator)和分母(denominator)。在我給出的**中,num等於1, den等於1,000,000

count( )用來返回時間

如果想深究,檢視 cplusplus

c++11的 #include< chrono >和傳統的 #include < ctime >相比,雖然寫的**量多了一點,但是看上去逼格略高,精度也更高~

hive sql 13位毫秒時間戳轉日期

hive sql 中有時間戳轉日期的函式 from unixtime bigint unixtime string format 這裡面的unixtime,輸入單位是秒,也就乙個十位的bigint。但是我們實際中用的時間戳,一般都是13位的到毫秒時間戳,如果直接將該時間戳輸入方法中會有錯誤。如果是1...

C 11時間工具

表示一段時間 template class duration template struct ratio 預定義 typedef durationnanoseconds typedef durationmicroseconds typedef durationmilliseconds typedef...

生成唯一時間戳ID,1毫秒預計能生成1000個

凡事涉及到高效能貌似都是高大上的東西,所以嘛我也試試 其實這個時間戳id的生成主要為了解決我們公司內部的券號生成,估計有小夥伴認為券號生成有這麼麻煩嘛,搞個自增id完全可以用起來,或者時間取毫微公尺時間戳等。如果以上真是這樣簡單的話,那我要說道說道 首先自增id資源耗盡的時候,特別禮券號生成的越頻繁...