如何优化C程序性能
一段c程序,功能开发完成,开始性能优化。下面是小编为大家搜索整理的如何优化C程序性能,希望大家能有所收获,更多精彩内容请及时关注我们应届毕业生考试网!
当然是先用 -pg 编译,再gprof看“热点”在哪里,很快找到,是计算hash值的函数,于是换了个更快的hash函数——fnv ( /chongo/tech/comp/fnv/),速度提高了一些。接着把该hash函数内联(inline),程序又快了一些。内联函数不是解决性能问题的灵丹妙药,因为inline之后gprof就看不到该函数的调用情况,也就不好找真正的性能瓶颈了。
接着把几个常用循环中的变量声明为register,即优先使用寄存器,嗯,有点效果,但不是很明显。管它的`,快一点是一点。
最后把代码部分优化完,改编译参数了:
将 -O2 改为 -O3 ,跑了单元测试,没问题,性能好一点
加 -march=nocona ,性能又好一点(因为开发的程序只在服务器上跑,而公司的服务器都装intel的CPU,而且都是新到货,基本都是nocona平台,所以加上没问题)
加 -minline-all-stringops , 据说这个选项适合含有memset、memcpy语句较多的程序,这个正合我意,加上之后性能有好了一点
全部优化完了,查询400万的数据,从原先的4.9秒变为4.1秒,16%左右的性能提升,虽然不卓著,但性能就是钱啊,省钱是多么快乐的事啊....
【相关阅读】结构成员访问方法有哪些
[cpp] view plaincopy
#include "stdio.h"
#include "string.h"
#include
main ()
{
struct student{
int num;
char * name;
int score;
}stu;
struct student *p=&stu;
=1;
(*p)="tom";
p->score=78;
printf("%dn",p->num);
printf("%sn",p->name);
printf("%dn",p->score);
}
-
C语言选择结构
引导语:选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。以下是本站小编分享给大家的C语言选择结构,帮助大家巩固C语言基础,欢迎阅读学习!1.1用if语句实现选择结构1.在C语言中,if语句有两种形式:形式1:if(表达式)语句形式2:if(...
-
嵌入式C语言编程小知识
嵌入式系统是用来控制或者监视机器、装置、工厂等大规模设备的系统。下面为大家整理了一些嵌入式C语言编程小知识,一起来看看吧!1.流水线被指令填满时才能发挥最大效能即每时钟周期完成一条指令的执行(仅指单周期指令)。如果程序发生跳转,流水线会被清空,这将需要...
-
C,C++,C#三者的阐述和区别
一、关于C语言C语言是一种结构化编程语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言的表现能力和处理能力极...
-
C语言scanf函数应用问题解答
C语言的输入是由系统提供的库函数完成的。scanf函数是C语言中最常用且功能最强的输入函数,但该函数如使用不慎,就会出现错误或得不到预想的结果。以下结果都是基于VC++6.0运行环境。一、格式说明符和输入项的三对应(类型、个数、顺序)scanf函数格式中的格式说明(“%...