扣一下一个计算密集型程序的性能

最近有一个超大计算量的程序要优化一下速度,毕竟对于大数据计算来说,速度也是一个很重要的用户体验要素。

 

............. N 多实验 ...........

某次实验是减少 汇编 指令条数,对于 C 代码有两种写法

C 写法一:

扣一下一个计算密集型程序的性能

对应生成的汇编指令是 各种 shl add shl add  shl add,这是 gcc 生成的神奇指令,总之这一顿操作后 row 就偏移了 584 个字节。

扣一下一个计算密集型程序的性能

time 命令看到实现程序的执行时间

扣一下一个计算密集型程序的性能

C 写法二,思路时减少 gcc 生成的 多条 shl add ... 的指令,用一条 乘法指令代替

扣一下一个计算密集型程序的性能

 

扣一下一个计算密集型程序的性能

time 命令看到 的执行时间竟然比方案一长了一点点。

扣一下一个计算密集型程序的性能

实际上 CPU 的乘法操作比 位移、加法操作 要耗时更多,再加上流水线,方案一的 多条指令不一定会比方案二的一条乘法指令慢。

实际上CPU内部的缓存命中率也是一个决定因素。