|
|
1
11
第一个例子可以只用CPU寄存器来实现。每秒可以访问数十亿次。第二个例子使用了太多的内存,它肯定会溢出l1和l2缓存(取决于CPU模型)。那会更慢。尽管如此,15 ms/100.000的写入速度达到1.5 ns/write-667兆赫。那是 不 慢。 |
|
|
2
10
看起来编译器在第一种情况下正在完全优化循环。 循环的总效果是无操作,因此编译器只会删除它。 |
|
|
3
3
这很简单。 在第一种情况下,您只有3个变量,可以很容易地存储在GPR(通用寄存器)中,但这并不意味着它们一直都在那里,但它们可能在一级缓存内存中,这意味着它们可以很快地被访问。 在第二种情况下,您有超过100K个变量,并且您需要大约400KB来存储它们。对于寄存器和一级缓存来说,这是非常有限的。在最好的情况下,它可能在二级缓存内存中,但可能不是所有缓存都在二级缓存中。如果寄存器l1、l2(我假设处理器没有l3)中没有某些内容,这意味着您需要在RAM中搜索它,这需要花费更多的时间。 |
|
|
4
1
我怀疑你看到的是
virtual memory
可能还有寻呼。这个
你也可能在衡量打电话的成本
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |