-
Notifications
You must be signed in to change notification settings - Fork 72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
请教误差范围 #7
Comments
多路上面可能不准,通常情况下要定期校验, include <bits/stdc++.h> 在macOS clang++上无法编译,似乎已经不是c++标准头文件了(gcc 保留) |
可以周期性重复调用calibrate(),这是多线程安全的 |
我修改了下test.cc,去掉了<bits/stdc++.h>,并去掉了sleep1秒的注释,这样可以大大提高精度降低误差 |
服务器跨平台使用修改rdsysns,使用steady_clock 是否比high_resolution_clock 更稳定 还是没太大区别? 改成steady_clock 后,测试数据不一样,b2c 数据误差持续变大 定期同步校验init()每次至少10ms等待, 对于服务器有点卡 |
下面这段代码每200ms运行一次,为减少同步卡顿,做了如下校验不知是否有问题
|
只需要init一次,可以重复calibrate,这样不用等10ms,也不会有多线程问题 |
笔记本上使用发现时间漂移比较严重,盒盖再翻盖后时钟误差巨大,甚至出现回拨现象,按如下解决
|
在我的服务器上,无论是程序自己calibrate还是cheat,误差都会在一分钟之内增大到微秒级甚至毫秒级
cpu是双路志强8255C,是支持constant_tsc的
另外在家里的电脑8700K上测试结果也是一样,系统都是Ubuntu 20.04.1 LTS
这里的误差是 rdtsc -> clock_gettime -> rdtsc,然后两次rdtsc结果平均值和clock_gettime结果的差
The text was updated successfully, but these errors were encountered: