如何使我的系统支持纳秒精度
How to make my system support nano seconds precision
当我运行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频率
- 编译时未启用intel oneApi CUDA支持
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 使用CMake检测支持的C++标准
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 为什么istream不支持右值提取
- 正在将csv文件读取为双精度矢量
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 扩展光电二极管探测器以支持多个传感器
- MSVC是否支持C++11样式的属性而不是__declspec
- 我可以信任表示整数的浮点或双精度来保持精度吗
- 如何在C++中的同一函数中使用字符串和双精度
- 特征::矩阵<双精度,1,3> 结构类型函数中的返回类型函数
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 如何计算具有指定类型的表达式的相对精度和绝对精度
- 任意精度无符号整数,仅支持后递增运算符
- 基元浮点和双精度支持小数位数
- 如何使我的系统支持纳秒精度