c语言佚代,C语言高效编程四法

阅读: 评论:0

c语言佚代,C语言高效编程四法

c语言佚代,C语言高效编程四法

一、空间换时间

例如:字符串的赋值方法A:

#define LEN 32char stringl[LEN];MEMSet(stringl,0,LEN);strcpy(stringl,“This is anexample!!”);方法B:

const char string2[LEN]=“thisis an example!!”;char *cp;cp=string2;从上面的例子可以看出,方法A和方法B的效率是不能比的。在同样的存储空间下,B直接使用指针就可以操作了,而A要调用两个字符函数才能完成。B的缺点在于灵活性没有A好,在需要频繁更改一个字符串内容的时候,A具有更好的灵活性;如果采用方法B,则需要预存许多字符串,虽然占用了大量的内存,但是获得了程序执行的高效率。

二、运用数学方法

在编写程序时,采用一些数学方法会大大提高程序的执行效率。

例如:求1~100的和。

方法A:

int I,j;for(I=l;I<=100;I++){j+=I;}

方法B:

int I:

I=(100*(1+100))/2;方法A循环了100次,最少用了100个赋值,100次判断,200个加法(I和j);方法B仅仅用了1次加法,1次乘法和1次除法。

三、多使用位操作

在计算机程序中,位是可以操作的最小数据单位,从理论上讲可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件或者做数据交换使用,但是灵活的位操作也可以有效地提高程序运行的效率。举例如下:

方法A:

int I,j;I=257/8;j=456%32;

方法B:

int I,j;I=257》3;j=456-(456》4《4);从程序上看好像方法B比方法A麻烦。但是,仔细查看产生的汇编代码就会明白,方法A调用了基本的取模函数和除法函数,既有函数调用,还有很多汇编代码和寄存器参与运算;而方法B则仅仅是几句相关的汇编,代码更简洁,效率更高。

四、嵌入汇编

举例如下:将数组1赋值给数组2,要求每一字节都相符。

char stringl[1024],string2[1024];方法A:

int I;for(I=0;I<1024;I++)*(string2+I)=*(stringl+I);方法B:

#ifdef_PC_int I:

for(I=0;I<1024;1++)*(string2+I)=*(slringl+I);#else#ifdef_ARM__asm{  mov R0,stringlmov R1.string2mov R2,#OLOOP:

LDMIA RO!,[R3-R11]

STMIA R1![R3-R11]

ADD R2,R2,#8CMP R2,#400BNE LOOP}

#endif方法A是最常见的,使用了1024次循环;方法B则根据平台做了区分,在ARM平台下,用嵌入汇编仅128次循环就完成了同样的操作。有人会说,为什么不用标准的内存拷贝函数呢?这是因为在源数据里可能含有数据为O的字节,这样,标准库函数会提前结束而不能完成要求的操作。这个例程的典型应用是LCD数据的拷贝过程。根据不同的CPU,熟练使用相应的嵌入汇编,可以大大提高程序执行的效率。

本文发布于:2024-01-30 23:43:59,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170662944423693.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:语言   高效
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23