当前位置:首页 > 新闻资讯 SEO优化

C语言程序优化工作流程的注意事项

发表日期:2021-01-18 16:03:15作者来源:浏览次数:


  在《【解密】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语言程序中,有些指令的执行顺序没有严格的要求,程序员可以作出一些位置上的调整,因此可以适当的调整这些指令的位置,穿插于其他的指令之中,从而减小指令的相关性,增加运行时的并行性。

如没特殊注明,文章均为江浙沪网络推广,转载请注明来自https://www.seokaowo.com/html/news/
相关推荐新闻

网站SEO优化不仅仅是做搜索引擎排名,更应该关注的是优化

它还包括充分满足用户的需求、清晰的网站导航、完善的在线帮助等,在此基础上,使网站的功能和信息发挥...

日期:2021-01-09 浏览次数:332

贵阳seo优化推广的方法和途径你知道多少

SEO优化公司表示云网客是一套操作简单、高效率、低成本、覆盖全网络的网络营销推广系统。贵阳seo优化推...

日期:2021-01-03 浏览次数:279

电子邮件营销用实力诠释在数字营销浪潮中重要地位

电子邮件营销似乎在新兴营销渠道面前相形见绌。时下一个全新的视角对其所扮演的角色又一次定义。营销者...

日期:2021-01-09 浏览次数:266

「纸巾网络营销微观分析」

  纸巾网络营销微观分析: 影响纸巾销售的宏观因素-百度知道

日期:2021-01-04 浏览次数:265

南宁网络推广需要注意哪几点【找SEO优化】

SEO优化公司表示网络推广就是以企业产品或服务为核心内容,建立网站,南宁网络推广公司再把这个网站通过...

日期:2021-01-03 浏览次数:245

网站推广-如何提升内容的有效性

SEO优化公司指出的网站推广是可以使推广效果覆盖全网,网络营销无死角。不管是PC,还是手机端,不管是搜...

日期:2021-01-03 浏览次数:244

新北seo_seo公司

如何做好新北seo_seo公司seo公司是交通seo兄弟们(郦映)看到分析的事情,本次赠送新北seo_seo公司...

日期:2021-01-17 浏览次数:234

企业网站首页设计的四大要求分析

  企业网站是企业为了在互联网进行宣传和品牌建设而建设制作的代表企业网形象的网站,该网站...

日期:2021-01-18 浏览次数:234

搜索引擎优化的本质是什么?

很多人觉得真的太难了,他们把自己的心思和时间都花在某个关键词上面,排名没有上升,导致很多人想要放...

日期:2021-01-09 浏览次数:232

一份实用的seo整体优化方案

正常情况下单独优化网站的某一个点无法让网站发挥出最大的seo效果,通过对网站进行系统化诊断,...

日期:2021-01-16 浏览次数:231

相关标签
网站报价网站报价方案
网站建设解决方案
抖音推广解决方案 响应式网站建设方案 手机微信网站解决方案 旅游网站解决方案
志强网络拥有资深设计师团队和自主系统开发技术团队,为客户专业定制企业品牌网站、响应式网站、商城系统、手机微信网站、外贸网站、营销型网站、旅游网站、微信小程序、APP等。欢迎广大客户咨询!