关于C程序优化的几点看法

来源 :商情·教育论坛 | 被引量 : 0次 | 上传用户:connielihui
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】对程序进行优化,通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个矛盾的统一,一般是优化了代码的尺寸,就会带来执行时间的增加,如果优化了程序的执行速度,通常会带来代码增加的副作用,很难鱼与熊掌兼得,只能在设计时掌握一个平衡点。
  【关键词】标识符;表达式;函数;全局变量;局部变量
  【Abstract】Carries on the optimization to the procedure, usually is refers to the optimized procedure code or the procedure carries out the speed. The optimized code and the optimized speed are in fact gives the shield the unification, generally optimized the code size, could bring the execution time the increase, if optimized the procedure to carry out the speed, usually could bring the side effect which the code increased, the very difficult fish and the bear’s paws concurrently,only could when the design grasped a balance point.
  【Key words】Identifier;Expression; Function; Overall situation variable; Partialvariable
  
  1.引言
  
  C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。当今很多场合都用到了C程序,比如全国计算机等级考试。如何让C程序更优化,下面是我的几个观点。
  
  2.程序结构的优化
  
  2.1 程序的书写结构:虽然书写格式并不会影响生成的代码质量,但是在实际编写程序时还是应该尊循一定的书写规则,一个书写清晰、明了的程序,有利于以后的维护。在书写程序时,特别是对于While、for、do…while、if…else、switch…case等语句或这些语句嵌套组合时,应采用“缩格”的书写形式。
  2.2 标识符:程序中使用的用户标识符除要遵循标识符的命名规则以外,一般不要用代数符号(如a、b、x1、y1)作为变量名,应选取具有相关含义的英文单词(或缩写)或汉语拼音作为标识符,以增加程序的可读性。
  2.3 程序结构:C语言是一种高级程序设计语言,提供了十分完备的规范化流程控制结构。因此在采用C语言设计单片机应用系统程序时,首先要注意尽可能采用结构化的程序设计方法,这样可使整个应用系统程序结构清晰,便于调试和维护。对于一个较大的应用程序,通常将整个程序按功能分成若干个模块,不同模块完成不同的功能。各个模块可以分别编写,甚至还可以由不同的程序员编写,一般单个模块完成的功能较为简单,设计和调试也相对容易一些。在C语言中,一个函数就可以认为是一个模块。对于一些常用的功能模块,还可以封装为一个应用程序库,以便需要时可以直接调用。但是在使用模块化时,如果将模块分得太细太小,又会导致程序的执行效率变低。
  2.4 定义常数:在程序化设计过程中,对于经常使用的一些常数,如果将它直接写到程序中去,一旦常数的数值发生变化,就必须逐个找出程序中所有的常数,并逐一进行修改,这样必然会降低程序的可维护性。因此,应尽量采用预处理命令方式来定义常数,而且还可以避免输入错误。
  2.5 表达式:对于一个表达式中各种运算执行的优先顺序不太明确或容易混淆的地方,应当采用圆括号明确指定它们的优先顺序。一个表达式通常不能写得太复杂,如果表达式太复杂,时间久了以后,自己也不容易看得懂,不利于以后的维护。
  2.6 函数:对于程序中的函数,在使用之前,应对函数的类型进行说明,对函数类型的说明必须保证它与原来定义的函数类型一致,对于没有参数和没有返回值类型的函数应加上“void”说明。如果需要缩短代码的长度,可以将程序中一些公共的程序段定义为函数。如果需要缩短程序的执行时间,在程序调试结束后,将部分函数用宏定义来代替。
  
  3.代码的优化
  
  3.1 选择合适的算法和数据结构:应该熟悉算法语言,知道各种算法的优缺点,将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排序、合并排序,都可以大大提高程序执行的效率。选择一种合适的数据结构也很重要,比如在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。
  3.2 使用指针:数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。
  3.3 使用尽量小的数据类型:能够使用字符型(char)定义的变量,就不要使用整型(int)变量来定义;能够使用整型变量定义的变量就不要用长整型(long int),能不使用浮点型(float)变量就不要使用浮点型变量。
  设定使用printf参数,尽量使用基本型参数(%c、%d、%x、%X、%u和%s格式说明符),少用长整型参数(%ld、%lu、%lx和%lX格式说明符),至于浮点型的参数(%f)则尽量不要使用,使用%f参数,会使生成的代码的数量增加很多,执行速度降低。
  3.4 使用自加、自减指令:通常使用自加、自减指令和复合赋值表达式(如a-=1及a+=1等)都能够生成高质量的程序代码,而使用a=a+1或a=a-1之类的指令,有很多C编译器都会生成二到三个字节的指令。
  3.5 减少运算的强度:可以使用运算量小但功能相同的表达式替换原来复杂的表达式。如下:
  求余运算:
  a=a%8;
  可以改为:
  a=a&7;
  说明:位操作只需一个指令周期即可完成,而大部分的C编译器的“%”运算均是调用子程序来完成,代码长、执行速度慢。通常,只要是求2n方的余数,均可使用位操作的方法来代替。
  3.6 查表:在程序中一般不进行非常复杂的运算,如浮点数的乘除及开方等,对这些即消耗时间又消费资源的运算,应尽量使用查表的方式,并且将数据表置于程序存储区。如果直接生成所需的表比较困难,也尽量在启动时先计算,然后在数据存储器中生成所需的表,后以在程序运行直接查表就可以了,减少了程序执行过程中重复计算的工作量。
  
  4.结束语
  
  关于优化程序的方法还有很多。以上是本人学习C语言的几点观点,仅供大家参考。
  
  参考文献
  [1] 谭浩强.C程序设计.清华大学出版社
  [2] 严蔚敏.数据结构.清华大学出版社
其他文献
中国是一个诗歌大国,无数优秀诗歌流传千古,闻名遐迩。诗歌因其语言含蓄凝练,情感丰富饱满,韵律和谐优美,有着独特的艺术视角和深厚的人文底蕴,受到广大读者的喜爱。教材是知识传播和能力培养的重要场域,即使随着时代发展,越来越多的传播工具出现,但教科书在时代进程中仍旧发挥着润物细无声的重要作用,对诗歌文化的传承与发展意义重大,所以研究语文教科书中的诗歌作品选编是非常必要的。本论文以新时期来的人教版小学、初中、高中语文教科书为研究对象,研寻教材中诗歌作品的变化趋向与规律,旨在为诗歌选编构建一个结构化图谱,为今后的语
《周礼》涉及的内容非常丰富,如先秦时期的名物、典章、文化、风俗、制度等,且多有史料可采,堪称中国文化史上的一大宝库。《周礼》名物词研究是先秦两汉词汇学研究的一个重要课题,它与汉语词源学有着密切的关系。本文选取《周礼》中的建筑类名物词作为研究对象,用归纳和比较互证的方法,考辨名物本体,并对建筑类名物词的词源义进行探索,总结其命名理据及所蕴涵的建筑文化。
  文章的主要内容如下。
  绪论部分。主要介绍《周礼》的基本概况,梳理名物词及《周礼》词汇的研究概况,并对研究意义和方法作出了详细说明。
钱陈群(1686-1774)字主敬,一字集斋,号香树、修亭,又号柘南居士,浙江嘉兴人,康熙辛丑六十年进士,官至刑部侍郎加刑部尚书衔太子太傅,谧号文端。作为历经康熙、雍正、乾隆三朝的老臣,其诗、其文、其害、其画都颇为世人所倚重,其诗才尤为乾隆所称赞,与沈德潜并称为“馆合二词臣”,由此可见统治者对钱陈群诗文的推崇力度。
  同样是清中期的重要人物,学界对沈德潜的研究已经非常成熟,对钱陈群的关注却非常少,尽管后世对钱陈群的诗歌创作水准褒贬不一,作为有清一代词臣,钱陈群创作出大量的诗歌作品,无疑是充盈了清代
选本是文学作品传播的重要载体之一。由于承载文学批评的特殊使命,近年来学界对选本关注颇多,研究成果丰硕。明末清初是重要的社会历史转型期,政局的不稳定、社会风气的改变、传统思想道德遭受到冲击等诸多因素都在影响着知识分子的文化品格与诗学发展。特别是入清以后,许多知识分子更加倾向于选诗活动,试图通过选诗排解仕途的苦闷、躲避政局的纷争,并委婉地宣扬自己的诗学主张。因此明清两代是诗歌选本产出的高峰期,选本种类繁多。明末清初人选诗绝大多数都在委婉地表现自己的诗学思想,通过具体地选诗,诗人们在反思与批判地同时建立起自己的
《汉语大词典》是我国独立编纂的、规模最大的一部汉语专业性词典,是汉语语词的“通史”。它本着“古今兼收,源流并重”的编纂方针,搜集语料的范围包括各个领域的古今文献,是世界上搜集汉语词语最多、语料最为丰富的大型语文词典,对具有中等文化水平的读者的学习与研究起到了不可估量的作用,对中国辞书的编纂与发展起到了里程碑式的影响。
  《汉语大词典》正文共十二卷,共收单字2.27万,复词37.5万,共计五千多万字,涉及古今社会的各个方面,语料的丰富在众多词典中也是独树一帜。《汉语大词典》在我国辞书事业和文化发展的
乡土文学是具有中国文学特色的文学,也是最具有地方性的文学,反映的是地域的文化生活特征,展现的是地域的特殊生态景观,体现的是一种别具风情的地域特色。在这个层面上,乡土文学犹如文字的博物馆,保藏着那些纯粹的民族特色的语言,习俗,生活和具有鲜明地域特色的动植物、食材、景观等。这些是一个民族赖以存在的象征,是历史的见证。所以说乡土文学是中国传统博物学的最佳继承者。
  本文着重选取能够更好地体现乡土文学中的博物传统的作家,周作人、汪曾祺、王祥夫三人,并两分诸作家作品为:乡土文学前期与后期。前期指五四新文学至
此次辑录的女性赋主要从《历代妇女着作考》和《历代辞赋总汇》两部工具书中蒐集,共计67位作家,196篇赋。其间有因查找困难只看到残篇的,也有由於年代久远已散佚,仅存目录的,此次一并辑录。辑录按照朝代先後卢列,每个朝代又按照作家出生时间的先後排列,赋作随作家排列。正文按照凡例的标准先叙作者小传,後列赋文提要。作者小传尽量取自史志记载,史志未有记载的选取近人所编辞典中的叙述;提要主要包括该篇赋作的出处、主要内容、写作特点及评价性文字。女性赋原文作为附录缀於正文之後,所标出处是赋文及标点之依据,目的在於方便学者查
李清照词对词学的发展具有重要意义和影响。本文立足于文本,从创作接受的角度,探讨李清照词对历代词人创作的影响。第一章为总述,通过统计历代词人和韵李清照词作、化用李清照词句的材料,考察李清照词的创作接受在各个历史时期的发展和演变;分析创作接受李清照词的词人、词作的构成,探讨其接受特点。第二章、第三章深入文本内部,是本文研究的重点。第二章,从细处着手,主要分析历代词人对李清照成句的接受,从字面改造、句意研炼、艺术手法的运用三个方面展开,探讨后世词人对李清照成句的借鉴和创新。第三章着眼于整体词篇,分析词人对李清照
寻根文学、先锋文学和“新写实主义”小说出现于二十世纪八十年代,是新时期具有鲜明特色的三个文学流派。现有的研究都是对这三个流派的单独研究或作家作品研究,而很少有将这三者作为一个整体的研究对象去探讨它们的关联、共性的。
  本文第一次系统梳理了八十年代寻根文学、先锋文学和“新写实”小说各自的特点以及相互间的相似性,提出将三者统一看作是一股八十年代文学新潮的观点,并分析了八十年代后这一股文学新潮退潮的原因。
  本文第一章探讨寻根文学、先锋文学和“新写实”小说对旧的革命文学进行变革的各自特点。寻根在
【摘要】“以人为本”重视读者作为人的尊严与价值,包容读者的弱点,在满足读者对文献资源的需求的同时,注重满足读者的社会需求,享受尊重、享受使用资源的权利与自由。  【关键词】图书馆工作;以人为本;人性化服务    现代图书馆的职能、存在理由和价值都寓于其对社会公众的服务中,因此,不论其资源建设、服务项目配置以及服务格局和操作细节上,都应该体现“以人为本”的思想和精神,并为图书馆的发展赢得空间、赢得
期刊