易截截图软件、单文件、免安装、纯绿色、仅160KB

DSP中的C优化

 C6000系列DSP的硬件资源为高性能提高了必要条件,TI公司也配合C6000推出了世界上第一个效率可达70%~80%的汇编语言级C编译器,它产生的代码平均效率是以往DSP编译器的3倍,如何理解并充分利用这些有利资源,使代码达到所期望的性能,是本章的主题。
①     第一阶段:属于纯C阶段,此时不需要了解C6000的知识,只需保证代码的正确性。
②     第二阶段:利用本章介绍的优化方法改进C代码。
③     第三阶段:从C程序中抽出对性能影响较大的函数,编写线性汇编,再使用汇编优化器优化该段代码;或直接对该函数编写标准汇编。
以上三个阶段不是必须经过的,当在某一阶段已获得了期望的性能,就无需进入下一个阶段
3.2编译选项
    C6000
C/C++编译器提供了大量的编译选项,供用户在编译时选择使用。这些选项中有一部分是事务性的,比如选择文件路径和控制输出文件格式等;有一部分直接影响或控制编译器的优化过程,进而影响代码的优化性能。
编译选项是一个字母或者两个字母,对大小写不敏感,前面有一个“-”符号,分为若干等级和种类:
1、  在优化性能很重要的场合避免使用的:
-g:允许符号调试,要求编译器编译出的“.out”文件保留符号调试的能力,可以在c语言级别进行调试和剖析,极大限制代码的优化。使用联合使用-g、-mt和-o3可以保证能够进行符号调试的情况下最大限度的优化。
-mu:禁止使用软件流水方法编译。
 
2、用于性能优化的:
-o: 使能软件流水和其他优化方法。
    -o0/-o1(register-level
optimizations/ local optimizations):
·    流程优化
·    给变量分配寄存器
·    Performs loop rotation
·    消除无用的代码,简化表达式
·    去除不必要的局部内存的分配
 
  -o2(function-level optimizations):
·    启用软件流水
·    循环优化,如循环展开
·    去除冗余的全局表达式及内存分配
 
  -O3(file-level optimizations) :
·    去除未调用的函数
·    简化返回值无用的函数
·


相关文档:

VB/C++/C#串口通讯源代码【附详细注释】


VB
    If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
    MSComm1.CommPort = i1
    MSComm1.PortOpen = True
    MSComm1.InputMode = comInputModeBinary
    MSComm1.InBufferCount = 0
& ......

C/C++中的结构体对齐问题(内存对齐)

由于程序运行时占用的内存过大,所以想办法给程序瘦身。
在调试中发现结构体占用的size竟然和预想的不一样,原来……
看看下面讲的吧,肯定会不枉此看哦!
1,比如:
struct{
short a1;
short a2;
short a3;
}A;
struct{
long a1;
short a2;
}B;
sizeof(A)=6, sizeof(B)=8,为什么?
注:sizeof(sho ......

C中CONST的使用

const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。
  虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?请看下面几个问题。
  问题 ......

Python 中的函数调用(类似c中的使用函数入口地址)

def login():
    print 'login'
def logout():
    print 'logout'
controllers = {
'in': login,                              ......

C标准库源码解剖(10):区域设置函数locale.h

    国家、文化和语言规则集称为区域设置,locale.h头文件中定义了区域设置相关的函数。setlocale函数用于设置或返回当前的区域特性,localeconv用于返回当前区域中的数字和货币信息(保存在struct lconv结构实例中)。setlocale的第一个实参指定要改变的区域行为类别,预定义的setlocale类别有:
 &n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号