扣一下一个计算密集型程序的性能
最近有一个超大计算量的程序要优化一下速度,毕竟对于大数据计算来说,速度也是一个很重要的用户体验要素。
............. N 多实验 ...........
某次实验是减少 汇编 指令条数,对于 C 代码有两种写法
C 写法一:
对应生成的汇编指令是 各种 shl add shl add shl add,这是 gcc 生成的神奇指令,总之这一顿操作后 row 就偏移了 584 个字节。
time 命令看到实现程序的执行时间
C 写法二,思路时减少 gcc 生成的 多条 shl add ... 的指令,用一条 乘法指令代替
time 命令看到 的执行时间竟然比方案一长了一点点。
实际上 CPU 的乘法操作比 位移、加法操作 要耗时更多,再加上流水线,方案一的 多条指令不一定会比方案二的一条乘法指令慢。
实际上CPU内部的缓存命中率也是一个决定因素。