![]() |
1
4
分支在现代CPU上很昂贵,而内存访问在嵌入式/旧CPU上很昂贵。所以,除非你有一个奇怪的内存,写的时间比读的时间长(提示:你没有),否则直接分配的单元总是会更快。 更糟糕的是,具体原因如下:
|
![]() |
2
1
为了得到实际的结果,在不同的架构上分析这一点肯定是值得的。 |
![]() |
3
1
这取决于各种因素:
|
![]() |
4
1
除了评测建议之外,它还真的取决于什么内存在备份写请求——例如,如果它是内存映射的闪存设备,那么写操作可能会非常昂贵。 |
![]() |
5
1
最近我读了很多关于快速压缩技术的文章,大家都强调要避免
|
![]() |
6
1
在现代流水线处理器上,您需要考虑这一点:
带条件写入的读取 至少 一个内存访问和一个可能预测失误的分支。假设分支占用了50%的时间,则平均有1.5个内存访问,外加预测失误的可能性。 无条件写入 确切地 一个内存访问,没有任何分支。 现在,您需要平衡预测失误的成本和存储成本,存储成本会根据您拥有多少缓存代理而变化。 |
![]() |
7
0
如果您正在进行指针、引用或基本值类型的赋值,我个人认为直接赋值会更快(希望在profiler上看到结果)。在50%的概率环境中,您可能会执行更多将值放入寄存器的指令。分配触发赋值运算符的结构或类对象将是最昂贵的。条件逻辑还引入了更多的指令,并增加了代码复杂性度量 |
![]() |
Ilya Loskutov · 无法将单词加载到寄存器中 2 年前 |
![]() |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
![]() |
Arya · 汇编语言中的“标签”——操作码 2 年前 |
![]() |
S1mple · 通过gcc生成64位共享库时的“未定义的主引用” 2 年前 |
![]() |
R0M2 · 为什么“GCC”忽略汇编代码的-fno pic 2 年前 |
![]() |
Akagi Akira · 如何在gnu汇编程序中组装MIPS cpu 2 年前 |