OO in C(3): 类模拟的性能分析

原创 2004年10月08日 13:11:00
 
类模拟的性能分析
       类模拟中使用了大量的函数指针,结构体等等,有必须对此进行性能分析,以便观察这样的结构对程序的整体性能有什么程度的影响。
 
1.函数调用的开销
#define COUNTER XX
void testfunc()
{
       int i,k=0;
       for(i=0;i<YY;i++){k++;}
}
 
       在测试程序里面,我们使用的是一个测试函数,函数体内部可以通过改变YY的值来改变函数的耗时。测试对比是 循环调用XX次函数,和循环XX次函数内部的YY循环。
       结果发现,在YY足够小,X足够大的情况下,函数调用耗时成为了主要原因。所以当一个“简单”功能需要“反复”调用的时候,将它编写为函数将会对性能有影响。这个时候可以使用宏,或者inline关键字。
       但是,实际上我设置XX=10000000(1千万)的时候,才出现ms级别的耗时,对于非实时操作(UI等等),即使是很慢的cpu(嵌入式10M级别的),也只会在XX=10万的时候出现短暂的函数调用耗时,所以实际上这个是可以忽略的。
 
2.普通函数调用和函数指针调用的开销
void (*tf)();
tf=testfunc;
 
       测试程序修改为一个使用函数调用,一个使用函数指针调用。测试发现对时间基本没有什么影响。(在第一次编写的时候,发现在函数调用出现耗时的情况下(XX=1亿),函数指针的调用要慢(release版本),调用耗时350:500。后来才发现这个影响是由于将变量申请为全局的原因,全局变量的访问要比局部变量慢很多)。
 
3.函数指针和指针结构访问的开销
struct a {
       void (*tf)();
};
 
       测试程序修改为使用结构的函数指针,测试发现对时间基本没有什么影响。其实使用结构并不会产生影响,因为结构的访问是固定偏移量的。所以结构变量的访问和普通变量的访问对于机器码来说是一样的。
 
测试结论:使用类模拟的办法对性能不会产生太大的影响。

OO in C(3): 类模拟的性能分析

 类模拟的性能分析       类模拟中使用了大量的函数指针,结构体等等,有必须对此进行性能分析,以便观察这样的结构对程序的整体性能有什么程度的影响。 1.函数调用的开销#define COUNTER...
  • foxcai
  • foxcai
  • 2004年09月27日 21:16
  • 826

C语言中的类模拟

C语言中的类模拟(C++编程思想)                   在面向对象的语言里面,出现了类的概念。这是编程思想的一种进化。所谓类:是对特定数据的特定操作的集合体。所以说类包含了两个范畴:数...
  • fupozsl
  • fupozsl
  • 2007年09月10日 21:53
  • 3417

类模拟的性能分析

类模拟中使用了大量的函数指针,结构体等等,有必须对此进行性能分析,以便观察这样的结构对程序的整体性能有什么程度的影响。 1.函数调用的开销#define COUNTER XXvoid testfunc...
  • digwtx
  • digwtx
  • 2005年03月29日 13:07
  • 403

PHPOO知识点总结

 面向对象:认识或认知事物的一种方法--->类比 对象是类进行实例化后的结果 object -->物质,事物 类 -->抽象:属性-->外观   行为-->做的事(默认情况下的是缺少了该属...
  • ailxxiaoli
  • ailxxiaoli
  • 2016年07月09日 20:43
  • 960

如何让c语言使用结构体近似模拟c++中的类

如今统治市场的主流编程语言,如c++,java,大都是面向对象类型的编程语言。 而众所周知,c语言是面向过程的编程语言,但是它拥有一个类似于类的结构,叫做结构体,主要的区别在于结构体无法定义函数。...
  • PeterZ1997
  • PeterZ1997
  • 2017年07月26日 12:44
  • 191

OO Programing in C (3)

C的面向对象概念OO Programing in C is not only POSSIBLE but also PRACTICAL.---------------------------------...
  • csh111wise
  • csh111wise
  • 2011年03月28日 20:59
  • 215

ABAP OO使用总结

ABAP面向对象编程特点的总结: superclass:父类,基类,超类 subclass:子类 method:方法,相当于其他语言中的函数function parameter:参数 construc...
  • Raffin
  • Raffin
  • 2013年11月09日 00:43
  • 2922

SAP ABAP OO ALV 获取当前的alv事件 包括f4帮助,回车按钮,等其他全部按钮alv操作

*   获取当前事件      lv_enter = cl_gui_alv_grid=>CUR_EVENT.
  • forever_crazy
  • forever_crazy
  • 2014年02月14日 15:22
  • 1694

Linux性能分析工具:gprof

http://blog.csdn.net/tgxallen/article/details/59203151 http://blog.chinaunix.net/uid-25194149-id-3...
  • SoaringLee_fighting
  • SoaringLee_fighting
  • 2018年01月11日 16:59
  • 66

C语言中的面向对象-类模拟的性能分析

类模拟中使用了大量的函数指针,结构体等等,有必须对此进行性能分析,以便观察这样的结构对程序的整体性能有什么程度的影响。 1.函数调用的开销#define COUNTER XXvoid testfunc...
  • yangjiudan
  • yangjiudan
  • 2006年03月20日 12:48
  • 713
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OO in C(3): 类模拟的性能分析
举报原因:
原因补充:

(最多只允许输入30个字)