优化这段代码。uint64_t wk_get_timestamp_ms() { uint64_t ts = 0; struct timeval now; gettimeofday(&now, NULL); ts = now.tv_sec; ts = ts * 1000 + now.tv_usec / 1000; return ts; }
时间: 2024-03-13 11:46:51 浏览: 119
gettimeofday
可以将获取时间戳的方式从gettimeofday改为clock_gettime,使用CLOCK_MONOTONIC_RAW选项,这样可以获得更高精度的时间戳,而且不受系统时间修改的影响。同时,可以将除法运算改为位运算,这样可以提高代码执行速度。
改进后的代码如下:
```
uint64_t wk_get_timestamp_ms() {
uint64_t ts = 0;
struct timespec now;
clock_gettime(CLOCK_MONOTONIC_RAW, &now);
ts = now.tv_sec;
ts = ts * 1000 + (now.tv_nsec / 1000000);
return ts;
}
```
需要注意的是,clock_gettime函数需要链接librt库,可以使用-lrt选项进行链接。
阅读全文