写点什么

C 语言性能优化:减少相关性依赖,利用指令并行提升性能

用户头像
一笑置之
关注
发布于: 2021 年 03 月 23 日
C语言性能优化:减少相关性依赖,利用指令并行提升性能

如下的例程中,iResult += i 和 iResult += (i+1)都会更新 iResult 的值,因此这两条语句是串行执行的,后一条语句必须等待前一条语句执行完成后,才能继续执行。


int f(void) { int iResult=123; int i; for (i = 0; i < 100; i+=2) { iResult += i; iResult += (i+1); } return iResult;}
复制代码

这是 C 语言版本与汇编语言版本的对照形式:

优化:

如下代码引入了 2 个临时变量,分别对 i 和 i+1 进行运算,它们是互不影响的,因此可以利用 CPU 的指令并行,加速程序的运行,从而提高性能。


int f(void) { int iResult=123; int iTmp0 = 0; int iTmp1 = 0; int i; for (i = 0; i < 100; i+=2) { iTmp0 += i; iTmp1 += (i+1); } return iResult+iTmp0+iTmp1;}
复制代码

这是 C 语言版本与汇编语言版本的对照形式:


用户头像

一笑置之

关注

还未添加个人签名 2019.08.10 加入

还未添加个人简介

评论

发布
暂无评论
C语言性能优化:减少相关性依赖,利用指令并行提升性能