1. 程式人生 > 實用技巧 >linux下定時器耗時研究

linux下定時器耗時研究

#include <time.h>
#include <chrono>
#include <unistd.h>
#include <iostream>

using namespace std;

int main() {
    int sum = 0;
    auto t = std::chrono::high_resolution_clock::now();
    time_t now = std::chrono::duration_cast<std::chrono::nanoseconds>(t.time_since_epoch()).count();

    
struct timespec req, rem; req = {0, 1}; // 空跑這個for迴圈,最少耗時2200多納秒 for (int i=0; i<1000; i++) { // usleep(1); // 大約花費57微秒:間隔1微秒,處理中斷花費50多微秒,還會受其他程序干擾。 // usleep(100); // 大約耗時163微秒 // nanosleep(&req, &rem); // 最小耗時和usleep差不多,也是至少需要56微秒 // t = std::chrono::high_resolution_clock::now();
// time_t pre = std::chrono::duration_cast<std::chrono::nanoseconds>(t.time_since_epoch()).count(); // sum += pre - now; // cout<<sum<<endl; // exit(0); // t = std::chrono::high_resolution_clock::now(); // time_t pre = std::chrono::duration_cast<std::chrono::microseconds>(t.time_since_epoch()).count();
// 這兩句取時間的語句加起來40納秒 } t = std::chrono::high_resolution_clock::now(); time_t pre = std::chrono::duration_cast<std::chrono::nanoseconds>(t.time_since_epoch()).count(); sum += pre - now; cout<<sum<<endl; }