专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
C语言程序优化工作流程的注意事项
当前位置:
网站建设
>
优化推广
C语言程序优化工作流程的注意事项
资料来源:网络整理
时间:
2023/3/21 5:45:48
共计:
3575
浏览
在《【解密】
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语言程序中,有些指令的执行顺序没有严格的要求,程序员可以作出一些位置上的调整,因此可以适当的调整这些指令的位置,穿插于其他的指令之中,从而减小指令的相关性,增加运行时的并行性。
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
留学网站建设论文怎么写
网站建设论文模板图片格式
写日记的网站建设方案模板
国外社交网站建设方案设计
个人网站建设定制公司电话
汽车改装网站建设文案范文
教育网站建设价格多少合适
网站建设设计素描作品图片
如何建设网站男人视频资源
陕西网站建设解决方案服务
·上一条:
C语言程序编辑中快程序速度的方法
|
·下一条:
SEO优化之网站排名不保证和提升问题
同类资讯
C语言程序编辑中快程序速度的方法
关于profile的介绍和汇编代码级的优化问题
企业SEO怎么样做好为搜索引擎蜘蛛“把脉”
PR与“RP”的区别,SEO优化PR值下降的原因
心理学与设计:如何利用颜色来唤起人们的情绪
网站突然收录下降,百度蜘蛛遇到了什么?
企业网站整体进行SEO优化时的五大技巧
北京网站建设之C程序建设相关知识【续】
北京网站建设之C程序建设相关知识总结
亮的单页面网站设计:65个新例子
做好网站排名有助于提高网站转化率
降低网站跳出率的SEO优化策略
SEO优化之搜索引擎是如何分配链接权重的
SEO优化好网站内链应具备哪些“高级装备”?
原创内容不被不收录的可能性有哪些,如何解决?
那些关于SEO行业中经典的优化原理
网页设计中的心理学
当外链全部指向首页时会对网站造成的“伤害”
SEO如何优化网站内容才能与百度建立友好关系
理清网站排名与用户需求哪些“剪不断理还乱”的关系
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-683-0016
邮箱:sales@gzit.cn
QQ:250211130
微信:18520775521
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有
粤ICP备16019765号
广州京杭网络科技有限公司 版权所有
返回顶部
400-683-0016
在线咨询
微信二维码