以相同的结果测量时间
Measure time with same result
我想测量时间(非常精确地以毫秒为单位(并在某个时间启动另一个线程(总共 4 个(。我试过了:
double Time()
{
duration = (std::clock() - start);
return duration;
}
//...
start = std::clock();
while (Time() < 1000)
{
//Start thread...
//...
}
它有效,但在每个实验中,我都得到了不同的结果(差异很小(。 甚至可能吗?是否取决于有多少程序在后台运行(它会减慢我的计算机速度(?那么如果可能的话,我应该使用什么?谢谢
(对不起我的英语(
操作系统以量子形式运行 - 低于我们感知水平的少量处理。
在单个量子内,CPU 应合理稳定地运行。 如果您的任务将使用多个时间量程,则操作系统可以自由地将时间片用于其他任务。
使用条件变量 您可以notify_all唤醒任何等待的线程。
因此,开始线程数,但在测量它们并开始工作之前,请让它们等待condition_variable。 然后,当condition_variable notify_all线程将可运行时。 如果它们同时启动,您应该获得同步的稳定结果。
出现差异。
- 未计划 - CPU 上的内核正在执行其他操作,因此 1 个或多个线程错过了量程
- 在 IO 上被阻止。 如果需要与磁盘交互,则可能会导致阻塞,直到数据可用。
- 在互斥锁中被阻止 - 如果他们正在修改共享资源,则等待资源变为可用会增加时间。
- 缓存行为 某些操作会导致刷新所有 CPU 的缓存,这将影响所有线程的性能。
- 无论数据是否在缓存中,CPU 从 L1 缓存运行的速度都比从主内存运行得更快。 如果线程读取相同的数据,它们将相互帮助,使数据被缓存,并以相同的(ish(速度运行。
相关文章:
- 用时钟测量程序的运行时间
- 为什么根据测量位置测量经过的时间时会有很大的不同?
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- 分别测量每个线程上花费的 CPU 时间(C++)
- 测量时间以在 c++ 中生成更好的随机数
- 给定使用 C++ 或 C,我如何测量在 linux 下进行线程切换需要多长时间?可能吗?
- Linux 测量时间问题! std::chrono, QueryPerformanceCounter, clock_ge
- 以相同的结果测量时间
- 在IF语句C 中测量时间
- 当我使用 cin 时,我如何使用 clock() 测量时间
- 在 GPU 上测量时间
- C++精确测量时间,单位为十进制毫秒
- 有没有办法在Windows上测量时间到微秒的精度
- 用C++测量时间
- 测量时间以执行简单的指令
- c++时钟测量时间不正确
- 为Windows c++测量时间,毫秒或微秒
- 获取CPU节拍和测量时间
- C 如何在 <time.h 中测量时间>
- 用c++语言测量时间,精度高