最近想研究一下CCS下的程序优化,之前也了解一些,现在查阅一下资料,整理一下。

当然优化有很多种,我本次先说的是执行优化方式。

  1. 首先打开我们自己的工程。工程文件若显示为黄色的,则表示此文件默认优化选项被修改。(默认的是O0)

2.右击文件选择File Specific Options选项,在弹出的对话框中选择Compiler,继续选择Basic,点开Opt Level的下拉菜单,这里我们就可以看到优化 五个选项。(None,O0,O1,O2,O3)。如下图:

3.参阅资料后,把Opt Level下的优化选项说明如下。

None:这个没啥说的吧。

O0:简化控制流图。

分配变量到寄存器。

进行循环换转。

删除未使用的代码。

简化表达式和语句。

内联声明为inline的函数。

O1:

执行O0的优化功能。

施行局部复制/常量传递。

删除未使用的赋值语句。

删除局部共有的表达式。

O2:

执行O1的优化功能。

进行软件流水。

进行循环优化。

删除全局共有子表达式。

删除全局未使用的赋值语句。

把循环中的数组的引用转变为递增的指针形式。

进行循环展开。

O3:

执行O2的优化功能。

删除未使用的所有函数。

当函数的返回值没有用到时,简化函数返回形式。

内联小的函数。

重新对函数声明进行排序。这样优化代码时,被调用函数的属性是已知的。

当所有调用都传递一个相同的参数时,把这个参数直接放到函数体中去,不再通过寄存器的方式传递这个参数。

识别文件级变量的特征。

4.总结

不要问我这句话是什么意思,你理解成什么样子,我就理解成什么样子,(o(∩_∩)o )你至少不是全都不懂吧。最好的方法就是每个选项一次一次试一下,当发现本次优化状态代码运行不对,那么就返回上个优化状态,这样Opt Level下的优化已经到了极限。

CCS3.3下执行优化的更多相关文章

  1. MySQL命令行下执行.sql脚本详解

    本文主要介绍一个在MySQL命令行下执行脚本文件的例子,通过这个例子让我们来了解一下在命令行下MySQL是怎样执行脚本的吧.现在我们开始介绍这一过程. 1.首先编写sql脚本,保存为的:book.sq ...

  2. 在linux命令行下执行php 程序

    如何在linux命令行下,执行php程序. 例子 打印当前时间 php -r "echo time()" 随机输出一个数字 php -r "echo rand(1,20) ...

  3. Linux下执行.sh文件

    Linux下执行.sh文件有两种情况: 一.直接./加上文件名.sh,如运行hello.sh为./hello.sh[hello.sh必须有x权限] 二.直接sh 加上文件名.sh,如运行hello.s ...

  4. Java JDBC下执行SQL的不同方式、参数化预编译防御

    相关学习资料 http://zh.wikipedia.org/wiki/Java数据库连接 http://lavasoft.blog.51cto.com/62575/20588 http://blog ...

  5. dos界面下执行java文件将错误输出到一个文本小技巧

    如果dos下执行java出现错误,把错误记录到一个文档 正确时如图,输出结果为hello,我把String的s改为小写,出现错误,用2>命令输出到error.txt在当前目录就出现了error. ...

  6. 解决方法:loadrunner 场景下执行webservice脚本是---报错10492 Error: Exception was raised when calling per-process-init function in extens

    在vug下执行时,脚本无异常,但是在controller下执行时报下面错误,网上查了下,解决方法千奇百怪,但无一可行. 分析了下错误,似乎是初始化进程有关.想到rts中的设置习惯时以线程方式执行. 遂 ...

  7. hadoop 任务执行优化

    任务执行优化 1. 推测式执行: 如果jobtracker 发现有拖后的任务,会再启动一个相同的备份任务,然后哪个先执行完就会去kill掉另一个,因此会在监控页面上经常能看到正常执行完的作业会有被ki ...

  8. mysql中对数据库的每个表执行优化的存储过程

    说明:此处为<高性能mysql(第二版)>中的示例代码,除了数据库名 其他未经更改.仅供学习及参考 对数据库的每个表执行优化的存储过程 CREATE PROCEDURE `inventor ...

  9. linux 下执行.sh文件总是提示permission denied

      linux 下执行.sh文件总是提示permission denied 如果你是root登陆的话(不是的话,切换到root用户,对*.sh赋可执行的权限) chmod 777 *.sh or ch ...

随机推荐

  1. day4 函数

    面向对象:-->类-->class面向过程:-->过程-->def函数式编程:-->函数-->def 函数是逻辑结构化和过程化的一种编程方法 使用函数的三大优点:减 ...

  2. 使用jedis操作redis

    一 连通性 1. 简单代码测试连通性 Jedis jedis = new Jedis(".......", 6379); String keys = "name" ...

  3. PHP常用库函数

    1.时间和日期 如何获取时间戳 time()--从1970年开始计算的毫秒数 echo time(); 日期 echo date('Y-m-d H:i:s'); 获取默认是时区 echo date_d ...

  4. spring mvc使用@InitBinder 标签对表单数据绑定

    在SpringMVC中,bean中定义了Date,double等类型,如果没有做任何处理的话,日期以及double都无法绑定. 解决的办法就是使用spring mvc提供的@InitBinder标签 ...

  5. ASP.net 中手工调用WS(POST方式)

    ASP.net 中手工调用WS(POST方式)核心代码:string strUrl="http://localhost:21695/service1.asmx/getmythmod" ...

  6. Angualr2 - 使用 VS2015

    使用 Vs 2015 快速上手 Angular2 许多程序员希望能够使用 VS2015 作为 IDE 来开发 Angular 2 应用,这里介绍如何设置 VS2015,使用快速上手文件来搭建 ASP. ...

  7. Hibernate中evict方法和clear方法说明

    Hibernate中evict方法和clear方法说明 先创建一个对象,然后调用session.save方法,然后调用evict方法把该对象清除出缓存,最后提交事务.结果报错: Exception i ...

  8. LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

    连接器LNK是通过调用cvtres.exe完成文件向coff格式的转换的,所以出现这种错误的原因就是cvtres.exe出现了问题. 在电脑里面搜索一下cvtres.exe,发现存在多个文件,使用最新 ...

  9. Linux CentOS安装postgresql 9.4

    一.前言 PostgreSQL通常也简称Postgres,是一个关系型数据库管理系统,适用于各种Linux操作系统.Windows.Solaris.BSD和Mac OS X.PostgreSQL遵循P ...

  10. PAT - 测试 01-复杂度2 Maximum Subsequence Sum (25分)

    1​​, N2N_2N​2​​, ..., NKN_KN​K​​ }. A continuous subsequence is defined to be { NiN_iN​i​​, Ni+1N_{i ...