易截截图软件、单文件、免安装、纯绿色、仅160KB

嵌入式开发中C程序优化浅析

嵌入式系统由于受功耗、成本和体积等因素的制约,嵌入式微处理器的处理能力与桌面系统处理器相比也存在较大差距,故嵌入式系统对程序运行的空间和时间要求更为苛刻。    
通常,需要对嵌入式应用程序进行性能优化,以满足嵌入式应用的性能需求。
   
1 嵌入式程序优化的类型
     
嵌入式应用程序优化,指在不改变程序功能的情况下,通过修改原来程序的算法、结构,并利用软件开发工具对程序进行改进,使修改后的程序运行速度更高或代码尺寸更小。
   
按照优化的侧重点不同,程序优化可分为运行速度优化和代码尺寸优化。运行速度优化是指在充分掌握软硬件特性的基础上,通过应用程序结构调整等手段来缩短完成指定任务所需的运行时间;代码尺寸优化则是指应用程序在能够正确实现所需功能的前提下,尽可能减小程序的代码量。实际应用中,这两者往往是相互矛盾的,为了提高程序运行速度,就要以增加代码量为代价;而为了减小程序代码尺寸,可能又要以降低程序运行速度为代价。因此,在对程序进行优化之前,应根据实际需要来制定具体的优化策略。随着计算机和微电子技术的不断发展,存储空间已不再是制约嵌入式系统的主要因素,因此本文主要讨论运行速度优化。
   
2 嵌入式程序优化遵循的原则
     
嵌入式程序优化主要遵循以下3个原则。
     
①等效原则:优化前后程序实现的功能一致。
   
②有效原则:优化后要比优化前运行速度快或占用存储空间小,或二者兼有。
 
③经济原则:优化程序要付出较小的代价,取得较好的结果。
   
3 嵌入式程序优化的主要方面
 
嵌入式程序的优化分为3个方面:算法和数据结构优化、编译优化以及代码优化。
   
3.1 算法和数据结构优化
     
算法和数据结构是程序设计的核心所在,算法的好坏在很大程度上决定了程序的优劣。为了实现某种功能,通常可以采用多种算法,不同算法的复杂度和效率差别很大。选择一种高效的算法或对算法进行优化,可以使应用程序获得更高的优化性能。例如:在数据搜索时,二分查找法要比顺序查找法快。递归程序需要大量的过程调用,并在堆栈中保存所有返回过程的局部变量,时间效率和空间效率都非常低;若根据实际


相关文档:

【C/C++相关知识】ATOM优化之GCC篇

作者: Yanqing Wang (Intel)
在ATOM程序优化利器中,笔者着重讲述了如何使用Intel Compiler对ATOM应用程序的优化,很多网友都比较感兴趣并想知道在GCC编译器下如何优化ATOM。借此,本文将重点于讨论如何使ATOM应用程序在GCC编译器下优化。
细心的网友可能发现GCC4.4.2手册没有讲述如何在ATOM平台优化,所以要通过GCC对AT ......

用c写个控制台下的进度条

最近想写个控制台下的进度条,可以知道程序的进展情况,不用弄个界面。其中最主要的就是“\b“字符,它的ascii码值是10,是退格的意思。
现把代码贴上,如下(可以在vc和linux编译):
progress.c
#include <stdio.h>
#ifdef _WIN32
#include <windows.h>
#define mysleep(n) Sleep(n*1000)
......

jstl标签: c:Foreach详解

 
为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。运作方式为当条件符合时,就会持续重复执行的本体内容。
   为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。运作方式为当条件符合时,就会持续重复执行的本体内容。
  语法
  语法1:迭代一集合对象之所有成员
  <c:forEac ......

在windows下通过VC6.0第一次用C调用SQLite

1. 下载SQLitewindows版
我们可以从下列网站下载sqlite的windows版。
http://www.sqlite.com.cn/bbs/topicdisp.asp?tid=182&topage=1#gotolast
下载这个三个文件:
SQLite 3.3.7 下载
windows版
sqlite-3_3_7.zip      这个是SQLite的windows可执行文件
sqlitedll-3_3_7.zip 这个 ......

捕获ctrl+c信号量

#include<signal.h>
#include<stdio.h>
void ctrlhandler( int a )
{
printf("you have press ctrl+c \n");
/* close 相关操作*/
getchar();
exit(0);
}
int main()
{
signal(SIGINT,ctrlhandler);
/*其他操作*/
getchar();
return 1;
}  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号