专业网站建设品牌,17年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
优化推广
> C语言程序优化工作流程的注意事项
C语言程序优化工作流程的注意事项
来源:网络整理 时间:2023/3/21 5:45:48 共
3599
浏览
在《【解密】
C语言程序优化工作流程
(一)》一文中分形科技为大家介绍了关于C语言程序优化工作的三个阶段,且对每个阶段进行的详细的介绍。程序员在进行优经工作时需要根据自身的情况来决定需要优化到哪个阶段。如有不懂之处可及时的联系分形科技的在线客服人员,我们将随时为您提升服务。
接下来分形科技小编要为大家介绍的是
C语言程序优化工作流程
的第二部分
内容
,也就是
C语言程序优化工作流程
的一些注意事项,共八个点需要编程人员注意。
C语言程序优化工作流程
的注意事项
1)选用C编译器提供的优化选项
在编译器中提供了分为若干等级和种类的自动优化选项,如下:
● -o:使能
软件
流水和其他优化方法
● -pm:使能程序级优化
● -mt:使能编译器假设程序中没有数据存储混淆,可进一步优化代码。
● -mg:使能分析(profile)优化代码
● -ms:确保不产生冗余循环,从而减小代码尺寸● -mh:允许投机执行● -mx:使能
软件
流水循环重试,基于循环次数对循环试用多个方案,以便选择最佳方案。
程序员在C语言程序优化工作中应根据实际编译的程序,选择合适的优化选项,进行源程序的优化。
2)减小存储器相关性
为使指令达到最大效率,C64X编译器尽可能将指令安排为并行执行。为使指令并行操作,编译器必须知道指令间的关系,因为只有不相关的指令才可以并行执行。当编译器不能确定两条指令是否相关时,则编译器假定它们是相关的,从而不能并行执行。
设计中常采用关键字const来指定目标,const表示一个变量或一个变量的存储单元保持不变。因此,在代码中加入关键字const,可以去除指令间的相关性。例如下面的程序:
void vecsum(short *sum,short*in1,short*in2,unsigned int N){int i;
for(i=0;i
由于使用了关键字const,消除了指令之间的相关路径,从而使编译器能够判别内存操作之间的相关性,找到更好的指令执行方案。
3)使用内联函数(intrinsics)
内联函数是C64X编译器提供的专门函数,它们与嵌入式的汇编指令是一一对应的,其目的是快速优化C源程序。在源程序中调用内联函数,与调用一般的函数相同,只不过内联函数名称前有下划线作特殊标识。
当汇编指令功能不易采用C语言表达时,可采用内联函数表示。例如在定点运算中经常要求出源操作数的冗余符号位数,这一功能如果用C完成的话,需要如下的代码:
unsigned int norm(int src1)
{
unsigned int sign, result = 0;
sign = src1 & 0x80000000;
while(1)
{
f(sign)
{
if((src1 = src1
4)short型数据的int处理
C64XDSP具有双16bit扩充功能,芯片能在一个周期内完成双16bit的乘法、加减法、比较、移位等操作。在设计时,当对连续的short型数据流操作时,应该转化成对int型数据流的操作。
这样一次就可以把两个16位的数据读入一个32位的寄存器,然后用内部函数来对它们处理(如_sub2等),充分运用双16bit扩充功能,一次可以进行两个16bit数据的运算,速度将提升一倍。
5)尽量少进行函数调用
函数调用的时候,要将PC和一些寄存器压栈保存,函数返回时,则将这些寄存器出栈返回,增加了一些不必要的操作。所以一些小的函数,最好是用适当的内联函数代替直接写入主函数里,一些调用不多的函数,也可以直接写入主函数内。
这样可以减少不必要的操作,提高速度。但是这样往往会增加程序的长度,因此它是一种利用空间换取时间的办法。
6)尽量使用逻辑运算代替乘除运算
在DSP里,乘除运算指令的执行时间要远远超过逻辑移位指令,尤其是除法指令,在设计的时候,可以根据实际情况,进行一些调整,尽量用逻辑移位运算来代替乘除运算,这样可以加快指令的运行时间。
7)
软件
流水线技术的使用
软件
流水线技术主要是用来对一个循环结构的指令进行调度安排,使之成为多重迭代循环并行执行。在编译代码时,可以选择编译器的-o2或-o3选项,那么编译器将根据程序尽可能地安排
软件
流水线。
在DSP算法中存在大量的循环操作,因此充分地运用
软件
流水线方式,能极大地提高程序的运行速度。但使用
软件
流水线还有下面几点限制:
● 循环结构不能包含代码调用,但可以包含内联函数。
● 循环计数器应该是递减的。
● 循环结构不能包含break,if语句不能嵌套,条件代码应当尽量的简单。
● 循环结构中不要包含改变循环计数器的代码。
● 循环体代码不能过长,因为寄存器(32个)的数量有限,应该分解为多个循环。
在
软件
流水线的运用上,应该尽量使复杂的循环分解成简单的小循环,以避免寄存器的数量不够;对于过于简单的循环,应该适当的展开,以增加代码数量和增加流水线中的迭代指令。
8)采用指令乱序技术
C语言程序中,有些指令的执行顺序没有严格的要求,程序员可以作出一些位置上的调整,因此可以适当的调整这些指令的位置,穿插于其他的指令之中,从而减小指令的相关性,增加运行时的并行性。
版权说明:
本网站凡注明“广州松河 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
酒业设计网站推荐知乎
手机版ui设计网站下载
面料创意设计网站推荐大全
杭州企业品牌设计网站推广
大理视觉传达设计网站官网
机械设计网站国内有哪些
苹果包装设计网站是什么
魔塔世界官网设计网站地址
签名设计网站配色方案怎么写
云南网页设计网站会员怎么注册
·上一条:
C语言程序编辑中快程序速度的方法
|
·下一条:
SEO优化之网站排名不保证和提升问题
同类资讯
网站SEO推广优化要怎么样做?SEO优化概念
短视频这么火?怎么样玩好短视频运营
网站设计师需知的色彩理论
如何设计SEO友好型网站
浅谈网站设计的寿命
AR太极公园之薛岭山公园
Web应用程序开发过程中应避免的10个错误
如何选择专业的网站制作公司
10个Banner设计技巧让您的网站获得更多点击次数
看图秒懂AI人工智能知识体系大全
让用户关注您的焦点内容的5个技巧
建立客户喜爱的网站的5个建议
如何分析网站的用户需求
教育培训类网站建设的几个技巧
网站建设公司需做好的几件事
如何让网站中的图片发挥最大效用
糟糕网站设计的6个特点
聘请专业网站设计机构制作网站的原因
APP开发中常见的错误
AI人工智能知识科普篇—语音识别
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2025 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com