如何让我的系统支持纳秒精度

当我从这个页面运行代码high_precision_timer时 ,我知道我的系统只支持微秒精度。

根据该文件,

cout << chrono :: high_resolution_clock :: period :: den << endl;

请注意,并不能保证每秒有多less滴答,只有最高可用。 因此,我们要做的第一件事是通过打印一秒钟多less次来获得精度。 我的系统每秒提供1000000个滴答,这是一个微妙的精度。

我也得到完全相同的价值每秒1000000蜱。 这意味着我的系统也支持微秒精度。

每次我运行任何程序,我总是得到价值xyz微秒和xyz000 nanosec。 我认为上述不支持我的系统nanosec可能是原因。

有没有办法让我的系统nanosec支持?

Solutions Collecting From Web of "如何让我的系统支持纳秒精度"

这不是一个答案。 我不能在评论中打印长信息。 我只是测试你的例子。 而我的系统输出结果是:chrono :: high_resolution_clock :: period :: den = 1000000000.我的系统每秒提供1000000000个刻度,这是一个纳秒精度。 不是1000000(微秒)。 您的系统每秒提供1000000个滴答,这是一个微妙的精度。 所以,我不知道如何帮助你。 抱歉。

 #include <iostream> #include <chrono> using namespace std; int main() { cout << chrono::high_resolution_clock::period::den << endl; auto start_time = chrono::high_resolution_clock::now(); int temp; for (int i = 0; i< 242000000; i++) temp+=temp; auto end_time = chrono::high_resolution_clock::now(); cout <<"sec = "<<chrono::duration_cast<chrono::seconds>(end_time - start_time).count() << ":"<<std::endl; cout <<"micro = "<<chrono::duration_cast<chrono::microseconds>(end_time - start_time).count() << ":"<<std::endl; cout <<"nano = "<<chrono::duration_cast<chrono::nanoseconds>(end_time - start_time).count() << ":"<<std::endl; return 0; } 

考虑到这一点,目前大多数处理器的工作频率为1到3 GHz,即2 * 10 ^ 9 Hz。 这意味着在处理器级别每隔0.5纳秒就会有1个tick。 所以我想你的机会非常渺茫。

编辑:虽然文档仍然稀疏,我记得它读取的CPU(不知道),其频率是固定的RTC。 另外作为一个建议,我认为与微秒测量(除非是医疗用途)相比,以纳秒为单位的测量性能几乎没有什么优势。

并看看这个问题和答案。 我认为测量时间可以使HPET的频率与CPU频率更为相关