首页 >> 运动护具

最火C语言高效编程的几招电度表防爆开关苇板机快开制粒机


2022年08月16日

C语言高效编程的几招

引言 随着DSP技术的不断发展和完善,数字信号处理的应用范围越来越广泛。工控、计算机、通信和消费电子产品中,都会找到它的影子。到了20世纪80年代后期,各个DSP的生产商都推出了自己的高级语言编译器。这使得利用高级语言开发DSP软件成为可能。编译器的原理是通过特定的语法规则把高级语言书写的逻辑转化成特定硬件平台所认知的汇编语言。由于编译器的首要性能是依据一定的规则编译出逻辑正确的代码。这样在保证正确性的前提下,编译出的汇编代码冗余很难兼顾效率。在一些实时性要求比较高的场合,例如在语音图像处理方面,必须对某些关键的算法进行优化。本文以TI公司的DSP芯片TMS320C55X为例,介绍如何对一个工程进行优化。 优化的一般步骤 在高级语言编译器出现以前,由于软件部分都是由汇编来完成,并且写出的代码性能都比较高,所以代码的优化在开发过程中已经完成,不需要把优化单独地作为开发的一个步骤。现在随着高级语言应用到DSP系统的开发中,在软件功能实现的基础上,软件执行效率的优化显得愈加重要。每个人在优化过程中使用的具体方法各有特点,但在总体上还是有一定的规范可寻。 笔者根据自己的实际工作经验,并参照其它比较成功的优化实例,总结了以下几个步骤,作为优化过程的参考。: 才能为复合材料在汽车领域的大范围利用扫清障碍(1)向C55X上移植所需的准备工作:数据类型的定义、intrinsic函数的使用、为适合多通道的应用所做的代码的修改。 (2)工程层的优化:对于函数体较小的函数使用"inline"限定词、数据的对齐。 (3)C函数层的优化:针对TMS320C55X系列芯片的内部结构;改变C代码使其能在硬件最大使用概率的条件下,降低算法的用时。(4)部分算法的修改。(5)部分函数的手工汇编。 机车配件向C55X上移植所需的必要工作 由于DSP硬件结构的约束,用C语言开发的代码在向其移植时,必瓜类蔬菜须作相应的改动,来适应特定硬件织袜机平台的特点。总结移植所需要的工作,主要有以下几点: (1)数据类型的定义。由于C55X系列芯片是TI公司生产的定点DSP芯片,其中累加器为40位。为了实现定点小数的数学运算,定义一个typedef.h的文件,在typedef.h文件中定义了几种数据类型。Word16对应short型;Word32对应long型;Flag对应int型。 (2)Intrinsic函数的使用。由所定义的数据类型可以实现定点的数学运算,由于这些基本的计算被多次使用,所以TI公司提供了这些函数的优化汇编代码。在算法实现代码文件头中加入"#include gsm.h "语句,但代如罗纹钢、薄板等码中调用了这些函数,则在编译时会自动把优化过的汇编代码嵌入到输出文件"*.asm"中,从而节省了大量的时间。 (3)为适合多通道的应用所做的代码修改。在 DSP 上实现的有些算法,例如语音的编解码等,需要同时处理多个通道。由于硬件资源(内存等)在工程的设计阶段已经划分完毕,所以要求在算法内不能在有内存的动态分配。解决的方法是事先把需要动态分配内存的变量放到一个结构体当中,集中在工程的设计阶段分配好内存。例如,将有关编码需要动态分配内存的数据结构合并为一个独立的结构体。这样当有多个通道同时工作时,只要保山对每一个通道分别开辟一块内存,公用算法代码,就可以实现多通道的应用。 硬泡聚氨酯材料可以符合国内及国际上各项标准的要求 工程层的优化在工程层的优化中一般使用以下两种技术:内嵌函数和数据对齐。 (1)内嵌函数 所谓的函数内嵌,是指用函数的本体代替函数的调用这一过程。这项技术去掉了复杂的函数调用过程来提高函数的执行效率,而付出的代价是增加了代码所占用的空间。 由评估信息来决定一个函数是否应该被内嵌。一般的原则是,那些代码量比较小、被频繁调用的函数适用于内嵌。但也要考虑其它的一些因素,包括函数传递参数的数量和类型、函数值返回的方式和数据对齐的方式。在某些情况下,当函数被内嵌以后,数据的对齐属性有可能被破坏。 实现函数内嵌的方法有以下三种: a.可以使用编译器的选项来隐含地使函数内嵌。使用“-x2-o0”编译选项可以控制用inline声明的函数;使用“--o3-oi size ”编译选项可以自动内嵌一些函数体比较小的函数。内嵌函数体的最大尺寸由 size 来决定。 b.可以使用“#pragma inline”声明语句。为实现同一函数在不同的文件中被inline,这个函数应该单独地放在一个头文件中,同时在每一个引用它的地方加上static限定词,这样可以避免链接器在链接时生成重复的全局标号定义。 c.可以手工地用函数体替代函数调用。 (2)数据对齐 编译器要求把长型数据类型存放在偶数地址边界。在申明一个复杂的数据类型 (既有多字节数据又有单字节数据) 时,该《要求》提出应该首先存放多字节数据,然后再存放单字节数据,这样可以避免内存的空洞。编译器自动地把结构的实例对齐在内存的偶数边界。 函数级的C代码的优化 这个阶段的重点在于充分利用

宁波华美妇女医院好吗
成都医治白癜风哪家好
成都西部白癜风医院挂号网
武汉治白癜风怎么走
相关阅读
2019年人工智能在7个方面的发展门窗拉手过桥贷款万能铣床洗衣粉刷子Trp

2019年人工智能在7个方面的发展毫无疑问,2018年是人工智能(ai)发展的重要一...

2024-04-18
我国激光雕刻包装设备未来发展重点排屑器工业烤箱镶入螺母控制仪表遥控器Trp

我国激光雕刻包装设备未来发展重点一、包装制品加工机械及包装容器加工机...

2024-04-18
泰富沙洋铁水联运项目成功签约链条橡胶密封中压风机汽配传动件Trp

泰富沙洋铁抽油烟机水联运项目成功签约3月30日上午,泰富重装集团与沙洋新...

2024-04-18
涂料生产安全技术桑拿房胶南扎带起子童凉鞋Trp

涂料生产安全技术涂料是指应用于物体表五指山面能形成一层具有保护和装饰...

2024-04-18
迪普科技医疗解决方案亮相2017中国卫生制氢设备钣金件低合金板度假村办公礼品Trp

迪普科技医疗解决方案亮相2017中国卫生信息技术交流大会5月18日,2017中国卫...

2024-04-18
9月6日余姚塑料城PMMA市场价格校校通球轴承精密冲压青釉古玩白炽灯Trp

9月6日余姚塑料城PMMA市场价格品名牌号产地/厂家性能价格上次报价涨跌发布...

2024-04-18
友情链接