
程序中有个变量需频繁除法和取模计算。该变量虽然是运行时动态获取的,但值可确定 u32 足以容纳。如果定义成 u64 ,是否会影响计算性能?
目标系统是 intel 或 arm ,但都是 64 位系统。
1 tool2d 2023 年 5 月 16 日 随手写个 benchmark ,自己测试一下呗。 我以前认为乘除要比加减计算费时,但用 SSE 优化指令测试了一下,好像也没拉开明显差距。 现在 CPU 比以前好多了,计算只要能并行,速度就够快。 |
2 pkoukk 2023 年 5 月 16 日 跑个 benckmark 呗,我用 golang 测试,u32 大概比 int64 慢不到 2% |
4 misdake 2023 年 5 月 16 日 via Android x86 微架构层面的性能差别: https://uops.info/html-instr/IDIV_R64.html https://uops.info/html-instr/IDIV_R32.html 对于有硬件 idiv 支持的的微架构,延迟和吞吐看起来不受输入数据影响。 感觉区别不算很大吧。 至于能否隐藏延迟还是要看你具体的 workload 情况,自己测测。 |
5 opengps 2023 年 5 月 16 日 虽然可能有关系,但这得多大的量才能把这个优势体现出来呢? |
6 rrfeng 2023 年 5 月 16 日 64 位架构上不是 64 位更快么? |