C语言如何提高程序效率

C语言如何提高程序效率,第1张

好的代码没有一个统一的衡量标准,在程序员们的世界里大家也是各自按照自己的标准衡量着自己和别人的代码。不过有一个标准几乎是被所有人认同的。服役时间越长、出错率越高的代码就是好代码。所有的编程方法、代码技巧甚至于设计模式都是为了达到这个目的而产生的。

如何提高程序效率

程序的效率分两部分:时间效率和空间效率。

时间效率 : 指的是程序运行的速度

空间效率 : 指的是程序占用内存或者外存的大小

对于这两点的把握,我们没有明确的方法。这里给出一些能够达成共识的规则,大家在今后自己编码的时候,可以通过这些规则来衡量自己的代码是否符合要求。

规则1:不要一味地追求程序的效率

如果追求程序效率需要付出降低正确性、可靠性、健壮性、可读性等质量代价,那么可以放弃这部分效率的提高。

规则2:优先提高全局效率

只有整个程序的执行效率提高才有意义,把时间和精力放在某一个不常被调用的小模块优化上得不偿失。

规则3:针对瓶颈部分优化

在实际开发工作中,我们经常遇到一些程序执行时间过长,需要优化。有些人上来就开始逐行检查代码,把认为可能影响效率的地方都尽量修改一遍。这样做不仅浪费时间,更重要的是,常常修改一遍后依然看不到明显的效果。

这种情况下,正确的方法是先找出限制效率的“瓶颈”,在这个部分做有针对性的优化。这么做才事半功倍。

规则4:先优化数据结构和算法,再优化执行代码

程序的两大要素是算法和数据结构,它们贯穿于程序的始终。因此,对它们的优化能够起到意想不到的良好效果。

规则5:时间效率和空间效率的矛盾

大多数时候,时间效率和空间效率是对立的。这就是程序设计中两个很重要的方法论,一个是“以空间换时间”,另一个是“以时间换空间”。此时应当分析那个更重要,作出适当的折中。

早间年,硬件成本比较高,人们大多都采用以时间换空间的策略,花费一些时间,减少内存开销。如今,内存条的价格已经非常便宜了,人们注重的`是软件的友好性,因此大部分时候都是用空间换时间。

规则6:代码不是越短越好

很多资深程序员都会有这样一个误区,完成同一个功能,代码越短越好。还经常有人说这样的话:“就这么个功能我几行代码就搞定了”。其实,追求代码精简是一个很大的误区。因为精简的代码并不一定产生高效的机器码。同时,它还付出了可读性这一代价。正确的做法是适当地做到代码精简。

注意事项

1 书写错误

经常有人把“==”误写成“=”。“||”、“&&”、“<=”、“>=”这类符号也很容易发生少一个的错误。最可怕的是编译器根本发现不了这样的错误。

2 初始化

变量(指针、数组)被创建之后应当立刻初始化,防止把未被初始化的变量当成右值使用。

3 数值错误

这也是一类非常容易忽略的错误。变量的初值、缺省值错误,或精度不够,一旦出错不易发现。

4 类型转换

为了避免数据类型转换的错误,我们要尽量使用显式的数据类型转换,避免在编译器中执行非我们所愿的隐式数据类型转换。

5 溢出

溢出分两种,一种是超过数据类型取值范围的赋值,另一种是数组下标范围越界。这两种都是要时刻注意的。

7 避免编写技巧性很高代码

技巧性过高的代码一定是可读性较差的代码,这种代码不易维护,后期的成本较高。

8 好代码要复用,坏代码要重写

如果原有的代码质量比较好,尽量复用它。但是不要修补很差劲的代码。当我们遇到差劲代码时,最好的方法是重写新代码替换它。

9 尽量使用标准库函数

对于标准库中有的函数,我们不要再花时间自己实现。很简单,你自己实现的一定不比库函数效率高。

10 把编译器的选择项设置为最严格状态

只有最严格的审查自己的代码,才能写出优秀的软件产品。很多人甚至连编译过程中出现的warning都懒得处理,这种态度坚决不能有。

汇编是低级语言,C是高级语言(也有人将C称为中级语言)。

其主要区别是:

汇编语言的指令一般是与机器码一一对应的,完成的都是原子 *** 作;而一条C语言的指令会对应一条或多条机器码,完成一个完整的功能。

理论上汇编的指令可以做到无冗余,程序执行效率和内存利用效率能达到最高;于此同时,编写程序的行数也是最多,最复杂,可读性和可维护行最差。汇编语言与机器码的紧密关系决定了不同芯片的汇编指令必然具有巨大的差异,连支持指令集都不一样,汇编指令肯定不同,要是指令集完全一样,那肯定是有其中一家的技术提供商侵权了。所以汇编语言编写的程序可移植性非常低,基本只能针对固定的芯片进行专用的开发。所以汇编基本上都用来编写最底层驱动级的代码。

C语言,以及其他高级语言的指令都只描述要完成的功能,在编译时,由编译器把指令转换成机器码,程序中存在冗余的基本 *** 作 *** 作和内存浪费是不可避免的,执行效率和内存利用效率取决于编译器的优化程度。由于编译器把机器码封装成了功能指令,所以高级语言指令无视底层 *** 作具体过程,在任何芯片上都可以将其他芯片程序的源代码在这个芯片的编译器上重新编译,实现软件的移植。

VC2010里面就有测试工具,不过也可以采用time函数来记录时间,t1=time(NULL);你的代码;t2=time(NULL);用掉的时间就是t2-t1当然,首先要把t1和t2定义为time_t,需要包含timeh。

前台程序与后台程序分享CPU处理时间的方式。如果选择“应用程序”, *** 作系统将把更多的CPU处理时间分配给前台程序,否则系统不分前台与后台的区别,为每个下在运行的进程分配同样多的CPU处理时间。一般我们普通用户可以让正在 *** 作的前台程序获得更多的CPU处理时间,只有在CPU空闲时才处理后台程序。而对于服务器,就应该选择“后台服务”。

通俗的说,就是在内存里自动运行的程序为的目的是更好的运行前台的应用程序

一个应用程序执行效率的快慢很大程度上取决于后台程序的稳定运行与否

(1)优化SQL语句,查询语句中尽量不使用select ,用哪个字段查哪个字段;少用子查询可用表连接代替;少用模糊查询,数据表中创建索引。

(2)对程序中经常用到的数据生成缓存(如使用redis缓存数据等)。

(3)对mysql做主从复制,读写分离。从而提高mysq执行效率和查询速度。

(4)使用nginx做负载均衡。将访问压力平均分配到多态服务器。

以上就是关于C语言如何提高程序效率全部的内容,包括:C语言如何提高程序效率、汇编与C的差别、如何看写的程序的执行效率,我是c语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9364081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存