专业网站建设品牌,17年专业建站经验,服务6000+客户--广州松河
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
广州松河
>
优化推广
> C语言程序优化工作流程的注意事项
C语言程序优化工作流程的注意事项
来源:网络整理 时间:2023/3/21 5:45:48 共
3602
浏览
在《【解密】
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优化之网站排名不保证和提升问题
同类资讯
2020年旅游网站建设应该注意哪些问题?-松河网站建设公司
外贸网站建设过程中需要注意的一些问题是什么-松河网站建设公司
推荐一家专业的网站建设公司-松河网站建设公司
企业网站建设时该如何保障网站的网络安全呢?-松河网站建设公司
物流网站建设需要注意哪三点?-松河网站建设公司
如何选择一家正规的建设网站公司?-松河网站建设公司
模板网站建设和定制化网站建设的区别是什么?-松河网站建设公司
如何减少建设网站的时间?-松河网站建设公司
企业如何通过网络推广运营自己的网站?-松河网站建设公司
教育网站建设的方法有哪些?-松河网站建设公司
网站建设一共有哪几个类型?-松河网站建设公司
要如何建设律师网站?-松河网站建设公司
英文网站建设需要注意哪些方面?-松河网站建设公司
企业网站建设为什么报价不一样?-松河网站建设公司
优秀的营销型网站建设需要具备哪些特质?-松河网站建设公司
怎么样建设合格的营销型网站?-松河网站建设公司
在企业网站建设中需要注意哪几点安全性问题呢?-松河网站建设公司
如何设计外贸网站建设吸引更多的客户?-松河网站建设公司
网站推广步骤有哪些?应该如何实施网站推广?-松河网站建设公司
2020年营销型网站要怎么制作?-松河网站建设公司
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州松河信息科技有限公司 2005-2025 版权所有
粤ICP备16019765号
广州松河信息科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com