|
3
|
| Yashas ÏάνÏα ῥεῠ· 技术社区 · 7 年前 |
|
|
1
2
它不是关于随机的挥发性固定你的问题-问题更深。 正如你们已经猜到的,这个问题确实和“y”有关 检查此示例:
我使用了除法技巧来避免硬优化(gcc可以计算所有循环,并直接以简单的赋值方式提供y;当使用add、sub或multiply时,它也将展开最里面的循环-请在godbolt中播放以查看其外观) 现在反汇编看起来是这样的: https://godbolt.org/g/R1EGSb
.L2是最里面的循环,所以代码看起来像预期的-子数组和子数组是在前面预先计算的。 所以你可能会想-为什么当“y”是本地的时候一切都好,而当全局的时候不是。 为了清楚起见,“y”不必在main中声明。它可以像这样静止
或使用命名空间
把y称为wtf::y; 还不错。 全部压缩为别名。要查看它,我们先将y改为pointer:
不再进行循环优化。。。。 可以假设y和phys addr重叠-写入y可能会修改一些内存单元,因此所有字典都必须使用最新数据计算(physaddr中的const表示只有指针不应该修改内存,而不是全局只读)。 但如果你“保证”这些地址不重叠优化就会回来。
TL;博士; 限制 告诉它这个事实。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |