写点什么

C 语言性能优化:循环条件 i<=n 与 i!=0 的性能差异

用户头像
一笑置之
关注
发布于: 2021 年 03 月 25 日
C 语言性能优化:循环条件i<=n与i!=0的性能差异

在 for 循环的循环条件中,i<=n 与 i!=0 有没有性能差异?从汇编代码中,可以清楚的看到,有的!

结论先行,在功能等价的情况下,for 循环条件应该用 i!=0 代替 i<=n,从而获得性能的提升。


低效代码:


int fact1_func (int n) { int i; int fact = 1; for (i=1; i<=n; i++) fact *= i; return (fact);}
复制代码


在功能上等价的高效代码:


int fact2_func (int n) { int i; int fact = 1; for (i=n; i!=0; i--) fact *= i; return (fact);}
复制代码


低效代码的汇编形式:


高效代码的汇编形式:


汇编形式对比:左侧为低效代码 i<=n,右侧为高效代码 i!=0。


汇编工具:https://godbolt.org/

比较工具:https://www.diffchecker.com/diff


用户头像

一笑置之

关注

还未添加个人签名 2019.08.10 加入

还未添加个人简介

评论

发布
暂无评论
C 语言性能优化:循环条件i<=n与i!=0的性能差异