|
1
4
在微体系结构实现定义了时间之后,如果CPU可以找到相同的热功率余量,频率缩放就会启动,以将要求较高的内核的时钟加速到最大值(在TDP的限制范围内)。 英特尔的实现称为 Turbo boost .
如果在系统中禁用频率缩放(例如
循环本身是很容易预测的,如果不是只有一个预测失误的话,那么你只能期望有几个预测失误
对于I-缓存(或多或少),应用程序几乎不使用D-缓存,除非C++库实现在变量使用上很重。
一般来说,从循环携带的依赖链的第二次迭代开始,代码运行得更快是众所周知的,因为CPU第一次填充缓存(数据、指令、TLB)。
|
|
|
2
1
正如其他人所说,几乎可以肯定的是,您会体验到动态CPU频率缩放的效果。
我可以在我的机器上复制你的结果。但是,如果我用
|
|
|
3
0
您所处的范围可能低于系统的分辨率。 考虑一下linux中的这句话 documentation ( 由我负责):
|
|
|
4
0
与你的追踪结果相符。在Windows上,值
你在我的Windows机器上的程序没有最初的减速。 但是,结果通常与pastebin文件中的结果非常相似。 所以问题是为什么循环在开始的时候需要更长的时间。我们可以看到这不是一个上下文切换,因为它们看起来明显更长(18k)。因此,处理器在程序开始时的工作速度肯定较慢。造成这种缓慢的原因可能是CPU上的其他内核正在清除我们内核的缓存,或者使用CPU的共享缓存。 我将通过添加一个初始睡眠来验证这一点,以便系统在启动时稳定下来,只有在机器稳定下来之后才运行循环。 |
|
|
5
0
因此,一种常见的模式是在最初的几毫秒内看到缓慢的时间,之后运行时间会减少(随着CPU的加速),并最终稳定下来。 |
|
Sweepy Dodo · JSON lite的格式化 1 年前 |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
Zegarek · Postgresql递归查询未提供预期结果 1 年前 |
|
|
Joe · 为什么这两个查询之间的性能存在如此大的差异? 2 年前 |
|
tic-toc-choc · 在`dplyr中高效使用列表进行过滤` 2 年前 |