【发布时间】:2017-01-04 17:05:06
【问题描述】:
考虑以下一段 C 代码。描述可能提高性能的三种不同优化(包括它们的名称)、它们提高性能的原因以及代码在优化之后的表现。假设所有变量都在代码序列之前声明并启动/具有某些值。
condition2 = condition1 | input_flag;
for(i=0;i<10000;i++){
if ( (t1==0) && (t2==0) && (t3==0) )
a = sin(45∗b∗3.14/180);
else
a = sin(135∗b∗3.14/180);
if ( condition2 & COND1 )
DoOneThing(a);
else if ( condition2 & COND2 )
DoAnotherThing(a);
else
DoYetAnotherThing(a);
}
我有以下C代码示例。我正在学习性能优化的方法,但我对它很陌生,不知道如何优化以下代码......
也许一种方法是在循环中初始化a。但我想不出任何其他方法来优化它。
【问题讨论】:
-
提示:
a依赖于i吗? -
一种可能的“优化”是使用布尔运算符而不是按位运算符。否则不会发生短路。
-
缩进现在几乎是正确的。
-
@MichaelWalz 不,它没有。这意味着我可以将第一个 if 语句放在循环之外吗?
-
第一段听起来像是家庭作业,而且是糟糕的作业。这是糟糕的代码,即使它已经过优化。
标签: c performance optimization