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

How to make my system support nano seconds precision

本文关键字:精度 支持 系统 何使 我的      更新时间:2023-10-16

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

根据文件

cout & lt; & lt;空间::high_resolution_clock::时间::窝& lt; & lt;endl;

请注意,并不能保证每秒运行多少次有,只是它是最高的。因此,我们的第一件事要做的是得到精度,一秒钟打印多少次时钟滴答作响。我的系统每秒提供1000000个节拍,也就是微秒级精度

我也得到了完全相同的值1000000 ticks/second。这意味着我的系统也支持微秒精度。

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

有没有办法让我的系统支持纳米秒?

这不是答案。我不能在评论中打印长消息。我只是测试一下你的例子。我的系统输出结果是: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至3ghz,即2 * 10^ 9hz。这意味着在处理器级别每0.5纳秒触发一次。所以我猜你的机会非常非常渺茫。

编辑:虽然这方面的文档仍然很少,但我记得读到它访问CPU的RTC(不确定),其频率是固定的。另外,作为一个建议,我认为用纳秒测量性能与用微秒测量相比没有什么优势(除非它用于医疗用途;))。

来看看这个问题和答案。我觉得这样更有意义用于测量时间的HPET频率与CPU频率