首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 学习园地
C语言高效编程四法
来源:本站整理  作者:佚名  2010-07-13 09:52:29



  一、空间换时间
   例如:字符串的赋值方法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,熟练使用相应的嵌入汇编,可以大大提高程序执行的效率。

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:71,117.19000 毫秒