#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; }