`
luowei31
  • 浏览: 81234 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

if 语句的优化

阅读更多

if语句很简单,相信大家都会,但是确有很多值得注意的。首先来说一下codestyle的问题。

=========不好的风格===========
if((x+4-y*25)>10||y>1023||GetSomething())
{
....
}

=========好的风格============
if((x+4-y*25)>10
||y>1023
||GetSomething())
{
....
}
相信大家能看出来第2段代码的时候要比第1段代码容易读的多。

if 语句虽然简单,但是涉及到CPU的branchprediction的问题。简单的说,CPU有个指令缓存,会预先把一部分代码读到缓存中等待稍后执 行。当CPU遇到if语句的时候,会把条件判断为true的那段代码读到缓存中,然后对if(条件判断)中的条件判断语句进行运算。如果运算结果是 false,那么CPU就会重新从内存中载入false的代码,在这期间大部分CPU时间会被浪费点。

所以在写if语句的时候,一定要把最容易成立的条件放在最前面进行判断。比如:

======错误的写法=======
if((float)rand()/RAND_MAX<0.2)//只有20%的可能运行if部分
{
//被读入到指令缓存的部分。
}
======正确的写法=======
if((float)rand()/RAND_MAX>0.2)//有80%的可能运行if部分。
{
//被读入到指令缓存的部分。
}

if语句另外一个需要注意的地方是在进行多重条件判断的时候,要安排好顺序。比如:

if((float)rand()/RAND_MAX<0.4
&&(float)rand()/RAND_MAX<0.3
&&(float)rand()/RAND_MAX<0.2)
{
......
}
根据C语言的规则(这点不同于Pascal),如果第一个条件(rand()/RAND_MAX<0.4)不成立,那么就不会运行第2和第3个条件,而直接跳转。所以应该把最难成立的条件放在第一的位置上,正确的代码为:
if((float)rand()/RAND_MAX<0.2//只有%20的可能
&&(float)rand()/RAND_MAX<0.3
&&(float)rand()/RAND_MAX<0.4)
{
......
}
由于编译器并无法计算和统计每种条件成立的可能性,只能靠大家手动的调整来提高代码的效率。

最后是if有一种技术叫做binarybranch,举个简单的例子,代码如下:

intx;
if(x==1)
{

}
elseif(x==2)
{

}
elseif(x==3)
{

}
elseif(x==4)
{

}
对付这段代码,可以用switch来解决,也可以用binarybranch,修改后的代码如下:
if(x<=2)
{
if(x==1)
{...}
else
{...}
}
else
{
if(x==3)
{...}
else
{...}
}
如果判断的情况复杂一点,编译器就没有优化的能力,需要考大家自己动手啦。

文章出处:http://data.gameres.com/document.asp?TopicID=65440

分享到:
评论

相关推荐

    if语句的优化

    ### if语句的优化 在计算机编程中,`if`语句是最基本的控制结构之一,用于根据条件执行不同的代码块。随着软件工程的发展和技术的进步,优化`if`语句成为了提高程序性能、减少资源消耗以及提升代码可读性和可维护性...

    javascript教程:关于if简写语句优化的方法

    下面我们将探讨几种通过UglifyJS或直接在编写代码时采用的if语句优化技巧。 1. **使用三元操作符** 三元操作符是JavaScript中的一种简洁表达方式,它可以替代简单的if-else结构。例如: ```javascript if (foo) ...

    编译原理课程设计 IF条件语句的翻译程序设计

    本项目重点在于设计一个能够处理IF条件语句的翻译程序,这涉及到对程序设计语言的基本构造的理解以及编译器前端的关键技术。 1. **条件语句的理解**:在编程语言中,IF条件语句是控制流程的一种基本结构,它允许...

    js中if语句的几种优化代码写法.docx

    ### JavaScript中if语句的几种优化代码写法 在JavaScript编程中,`if`语句是最基本也是最常用的控制结构之一。它允许程序根据条件执行不同的代码块,从而实现逻辑分支的功能。虽然`if`语句本身已经非常简单,但在...

    IF条件语句的翻译程序设计

    例如,可以测试含有嵌套IF语句的代码、含有非法字符的输入等。测试结果应该能够清晰地展示出哪些测试用例通过了,哪些失败了,以及失败的原因是什么。 #### 8、研制报告 ##### ①研制过程 在整个研制过程中,从...

    用if-else语句来优化奇数偶数的判定代码

    在本主题中,我们关注的是如何使用if-else语句优化奇数和偶数的判断代码。这个话题通常涉及到基本的数学逻辑和位运算,这两种方法在效率上有所不同。 首先,让我们回顾一下传统的if-else语句实现方式。对于一个整数...

    js中if语句的几种优化代码写法

    本文将探讨在JavaScript中优化`if`语句的几种方法,这些技巧可以帮助我们编写更加高效且简洁的代码。 首先,我们可以利用**三元操作符**来简化`if`语句。三元操作符`?`提供了一种简洁的条件判断方式。例如: ```...

    C语言程序设计(第2版)-2期 拓展知识4-2 if语句的嵌套.pdf

    在C语言中,if语句是进行条件判断的基本结构,它可以用于执行基于特定条件的代码块。当一个if语句内部再包含其他的if语句时,我们称之为if语句的嵌套。这种嵌套结构使得程序员能够处理更复杂的逻辑判断,从而解决更...

    LR_if.rar_If..._LR中IF语句格式_条件语句

    首先,`if`语句是控制流程语句的一种,它根据一个条件来决定执行哪一段代码。基本的`if`语句格式通常如下: ```c if (condition) { // code to execute if condition is true } else { // code to execute if ...

    华为FPGA设计高级技巧(Xilinx篇)

    - **IF语句优化**:通过调整IF语句中条件的先后次序,可使关键路径上的条件先执行,从而加速设计。 - **Case语句的应用**:Case语句能有效减少组合逻辑的复杂度,尤其是在多路选择或状态机设计中,其清晰性和效率...

    用if语句实现,用实数显示分数值

    本文将深入探讨如何使用if语句来实现将分数值转换为实数显示的方法,这对于理解和优化程序的逻辑流程至关重要。 首先,我们要理解`if语句`在编程中的作用。`if语句`是一种条件控制结构,它允许我们根据某个条件执行...

    IF-ELSE条件语句的翻译程序设计(递归下降法、输出四元式)

    在编程语言编译器或解释器的设计中,条件语句如IF-ELSE是核心部分,它们负责根据不同的条件执行不同的代码块。本话题主要探讨如何使用递归下降法来解析IF-ELSE条件语句,并将其转化为四元式,这是一个重要的中间表示...

    代码中大量的 if else如何优化.doc

    那么,如何优化这些 if else 语句呢?下面我们来讨论一些常见的优化方法。 首先,让我们看一下最简单的优化方法:提前 return。我们可以将判断条件取反,然后 return,避免了 else 语句的使用。例如: ```java if ...

    verilog中多个else_if级联造成的综合电路的低效率及解决办法

    ### Verilog中多个else_if...通过使用多个`if_else`或`case`语句等方法替代`else_if`级联,可以在很大程度上优化这些问题,从而得到更加高效的硬件设计。对于工程师来说,理解这些细节并在实践中灵活运用是非常重要的。

    编译原理课程设计 if else 语句翻译

    本课程设计的核心是实现 if-else 条件语句的 LR 分析方法,并生成对应的四元式。LR 分析器是一种自底向上的语法分析方法,适用于处理上下文无关文法,对于编写编译器来说非常实用。 首先,我们需要理解 if-else ...

    TIA博途WINCC的触摸屏VB脚本入门(IF THEN ELSEIF 判断语句).docx

    在工业自动化领域,西门子的TIA博途( Totally Integrated Automation Portal)是广泛使用的集成自动化软件,其中的...在实际的工业应用中,这样的功能可以被广泛应用,比如在质量控制、过程优化、故障检测等方面。

    IF-ELSE条件语句的翻译程序设计 (递归下降法、输出三地址表示)

    例如,IF语句可能被解析为一个检查条件的函数,接着是两个递归调用,分别对应于条件为真和为假时的代码块。递归下降法的优势在于结构清晰,易于理解和实现,但需要注意避免无限递归的情况。 输出三地址码是编译过程...

    第五章 IF语句与逻辑运算符2.zip

    在C++编程语言中,IF语句和逻辑运算符是构建条件控制结构的关键元素,它们在软件开发中扮演着至关重要的角色。本教程通过一系列SWF文件深入浅出地介绍了这些概念,帮助初学者理解并熟练掌握。 首先,我们要了解IF...

    使用if else语句把它们的中间数找出来

    在编程领域,`if...else`语句是条件控制结构的一种基本形式,用于根据不同的条件执行不同的代码块。在这个特定的题目中,我们需要编写一个程序,接收三个实数(浮点数)作为输入,然后使用`if...else`语句找到并输出...

Global site tag (gtag.js) - Google Analytics