嵌入式C++——关于C++的效率分析

嵌入式C++——关于C++的效率分析
顶嵌(TOP-E)|嵌入式linux企业培训|嵌入式Linux就业实训|承接嵌入式项目开发   2008-12-23 17:14:37 作者:顶嵌开源 来源:原创 文字大小:[][][]

C++给我们带来了面向对象的支持,近年来在大型的嵌入式项目中经常被采用,甚至有一些较新的操作系统如eCos,Symbian等都采用C++编写。不过C++在带来一些便利的同时,也引入了很多昂贵的特性。随着在嵌入式开发领域使用C++作为开发语言的公司和项目越来越多,有不少原来工作在桌面开发领域的C++程序员加入了嵌入式开发的阵营。对于这些由桌面开发转入嵌入式开发中的C++开发来说,需要特别注意程序的效率和资源占用情况,了解哪些C++特性可能带来执行时间和代码大小上的昂贵开销,并在有可能的情况下避免使用。

 

  •  类和对象

C++中引入了类的概念,以利于对象的封装,这在嵌入式开发中是完全可以利用的,与C语言中的struct相比,类几乎没有多少更大的开销。公有和私有成员数据及函数的列表与一个 struct 及函数原型的列表没有大的差别。C++编译器能够用public private 关键字决定,哪一个方法调用和数据访问是允许的或者是不允许的,但这个决定在编译的时候完成,所以运行时不会付出代价。单纯的加入类既不会影响代码的大小,也不会影响你的程序的效率,而且还能够有利于对象的封装。

 

  •  默认参数与函数重载

默认参数值也是没有损失的。编译器只是加入代码使得在每次函数被无参数调用的时候传递一个默认的值。类似地,函数名的重载也是编译时的修改。具有相同名字但是不同参数的函数在编译过程中分别分配了一个唯一的名字,每次函数名出现在程序中的时候编译器就替换它,然后连接器正确的把它们匹配起来。这些都几乎不会带来运行时的开销,唯一的缺点是符号表稍微复杂一些。操作符的重载与此类似,几乎没有运行时的开销。

  • 构造、析构、虚函数

构造函数和析构函数会带来一点损失。这些特殊的方法去分别保证每次这种类型的对象在创建或者超出了范围时被调用。然而,这个小量的开销是为减少错误而支付的一个合理代价,是可以被接受的。类似的,虚拟函数也具有一个合理的代价收益比。它的明显代价是在调用虚拟函数之前附加了一个存储查询,而普通的函数和方法调用是不受影响的。由于它是实现多态的基础,且代价比较小,是可以接受的。

  • 昂贵特性

根据一般的经验,比较昂贵的C++特性有模板、异常事件及运行类型识别。这三个特性都对代码的大小有负面的影响,而且异常事件和运行时类型识别还会增加执行时间。在决定是否使用这些特性之前,你可能要做一些实验来看看它们会怎么样影响你自己的应用程序的大小及速度。

 

 

事实上,在嵌入式软件界对于C++是否值得所产生的性能损失的问题一直存有很大的争议。在1996 年,一群日本的芯片厂商联台起来定义了一个C++语言和库的子集,使它更加适合嵌入式软件开发。他们把他们新的工业标准叫作嵌入式C++。作为一个C++标准草案的合适子集,嵌入式C++省略了很多不限制下层语言可表达性的任何可以省略的东西。这些被省略的特性不仅包括像多重继承性、虚拟基类、运行时类型识别和异常处理等昂贵的特性,而且还包括了一些最新的添加特性,比如:模板、命名空问、新的类型转换等。所剩下的是一个C++的简单版本,它仍然是面向对象的并且是C 的一个超集,但是它具有明显更少的运行开销和更小的运行库。对嵌入式C++有兴趣的读者可以到这里查看Embedded C++的详细定义(Specification):http://www.caravan.net/ec2plus/spec.html

 

 

来自:http://www.top-e.org/jiaoshi/html/?173.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据结构是计算机科学研究数据组织、存储和管理方式的一门学科。它关注如何高效地组织和使用数据,以及设计和实现相关的算法。数据结构是计算机程序的基础,它能够影响程序的性能和效率。 C语言是一种功能强大的编程语言,广泛应用于系统级编程和嵌入式系统开发。由于其底层语言特性和灵活的语法,C语言非常适合于处理和操作数据结构。 C语言提供了针对数据结构的一些基本概念和操作方式。例如,可以使用结构体来定义自定义的数据类型,结构体可以包含多个不同类型的变量。这种方式可以用来表示和组织复杂的数据结构,比如链表、树等。 此外,C语言还提供了一些对数据结构进行操作的函数和库。例如,可以使用指针来操作链表和树等数据结构,通过指针的灵活性,能够高效地进行数据的插入、删除和查找等操作。 在程序设计,数据结构的选择和设计是非常重要的。不同的数据结构适用于不同的场景和问题。在使用C语言进行程序设计时,我们需要根据实际需求选择合适的数据结构,并合理设计和实现相应的算法,以提高程序的性能和效率。 总结而言,数据结构与程序设计是密切相关的。C语言提供了丰富的功能和灵活的语法,使得我们能够方便地处理和操作各种数据结构。通过合理的数据结构选择和算法设计,我们能够编写出高效、可靠的程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值