`
helloyesyes
  • 浏览: 1273037 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

C和C++的一点数据

阅读更多
linus的一席言论引爆了C和C++社群间的“战争”。无论如何,我不会趟这趟混水。因为两种语言都是我的珍爱。C代表了我编程生命的童年,而C++代 表了青年时代。(呵呵,中年还没到呢。)长时间用C++,不玩儿点C技巧是不可能的,任务所致。只是在必要的时候用,必须恰到好处。但对于我而言,C技巧 是必不可少的。(对于C++的新手,请慎重)。
唉,同室操戈,令人心痛。
我在网上找到了一点点有代表性的数据,用以表明两种语言的各自特 征。如果有机会,我还会把得到的数据贴上来,供大家参考、分析。希望能够减少一些无用的争论。(有用的争论自然应鼓励,但至少不是linus的这种主观的 论断和谩骂。那两句粗口,有损其高手的名分(我还不敢称其为“大师”))。
====================================
1、Quantifying the Debate: Ada vs. C++(www.stsc.hill.af.mil/crosstalk/1996/07/quantify.asp)
这篇比较老,原是用来比较ada和C++的,C作为陪衬。但数据是挺直观的。主要集中在软件工程方面,如平均每功能点代码行数、错误数、费用等等。
这篇文章包含军事方面的项目,可以是给军方做参考用的,从链接上看,是美国空军
Software Technology Support Center。(也许是用来评估JSF项目用什么语言的,瞎猜)。应当比较客观。只是很老,那时的c++和现在也不一样。
2、
Quantifying Behavioral Differences Between C and C++ Programs(http://www.cse.ucsd.edu/~calder/papers/JplVersion.pdf)
这篇也是95年前后,网站是University of California, San Diego文件名上看似乎是喷气推进实验室的论文。
文中主要集中在性能方面,包括直接和间接调用数、调用相关代码数,甚至是catch命中率。
文章并不说好坏,只说差异。得出了如下基本结论:
  • C++ programs often perform an order-of-magnitude more indirect procedure calls;
  • procedures execute three times more instructions that C++ procedures (including methods), on average;
  • C and C++ programs have basic blocks of approximately the same size; C programs execute more conditional branches than C++ programs and C++ programs execute more procedure calls, indirect procedure calls, and returns than C programs;
  • C++ programs issue more loads and stores than C programs,
  • C++ programs allocate far more objects from the heap; and
  • C++ programs have worse instruction cache locality;.
需要说明的是,这个比较基于95年前的C++。此后,C++的特性发生了比较大的变化。
分享到:
评论

相关推荐

    C_C++嵌入式系统编程.pdf

    这是一本关犷使用C和C++来进行嵌入式系统编程的书。同样,这甩假定读者已经有了一些编程经验,并目‘至少熟悉这两种语言的语法。如果你比较熟悉基本的数据结构例如链表等,也会有些帮助。这本书并不要求你在计算机...

    0 bug C_C++商用工程之道

    笔者的“C 和C++无错化程序设计方法”,就是这样产生的,但笔者相信,很多资深的 软件工程师,都有自己的无错化设计方法,仅仅是没有说出来而已。 当工程完成,软件工程师会更加小心地看待自己的代码,使用大量的...

    通用的C++数据结构代码实现,使用模板.rar

    模板是C++中自动生成代码的技术,例如我们在C++若想实现一个函数的形参可以是多种数据类型就必须使用重载,模板则可以更加简单方便地实现这一点。 二、为什么使用模板 假1如我们想实现一个通用的排序算法 C语言:...

    C++习题和答案

    C++的习题和解答,可以从里面获得托盘上放置两个均匀固体介质组成的标定模板,模板的几何信息如图2所示,相应的数据文件见附件1,其中每一点的数值反映了该点的吸收强度,这里称为“吸收率”。对应于该模板的接收...

    c++的方式加载图片

    终于逼的我从C语言转行到了C++,说实话,有C的基础,读起C++还是蛮快的,读完之后感觉C++比C更为的方便,如果搞比较复杂的编程的话,必须是C++,若是C的话,虽然是模块化编程,面向过程的,但内部数据不安全,光一大...

    新手学习C++入门资料

    主体:(一)<C++与C语言的...而且C++允许重复定义变量,C语言也是做不到这一点的。看下面的程序: #include iostream.h int a; int main() { cin>>a; for(int i=1;i;i++) //C语言中,不允许在这里定义变量...

    Borland C++3.1 神话般的经典开发利器

    使用户能充分利用OOP的先进设计方法和省时效率高的特点,它是C语言的进一步发展,它是可移植的,所以用户可以很容易地将一个由C++编写的应用程序从—个系统移植到另一个系统。在任何地方,都可以用C++从事任何编程...

    Accelerated C++源代码

    现代C++可以看成由以下三部分组成: l 低级语言,多半继承自C。 l 更高级的语言特征,用户可以借此定义自己的数据类型,组织大规模的程序和系统。 l 标准库,使用上述高级特征提供一整套有用的数据结构和算法。多数...

    eclipse 开发c/c++

    C 和 C++ 语言都是世界上最流行且使用最普遍的编程语言, 因此 Eclipse 平台(Eclipse Platform)提供对 C/C++ 开发的支持一点都不足为奇。 因为 Eclipse 平台只是用于开发者工具的一个框架,它不直接支持 C/C++;它...

    Accelerated C++ PDF 中英文版

    现代C++可以看成由以下三部分组成: l 低级语言,多半继承自C。 l 更高级的语言特征,用户可以借此定义自己的数据类型,组织大规模的程序和系统。 l 标准库,使用上述高级特征提供一整套有用的数据结构和算法。多数...

    0bug c_c++商用工程之道.pdf

    笔者的“C 和C++无错化程序设计方法”,就是这样产生的,但笔者相信,很多资深的 软件工程师,都有自己的无错化设计方法,仅仅是没有说出来而已。 当工程完成,软件工程师会更加小心地看待自己的代码,使用大量的...

    Borland C++ 3.1

    使用户能充分利用OOP的先进设计方法和省时效率高的特点,它是C语言的进一步发展,它是可移植的,所以用户可以很容易地将一个由C++编写的应用程序从—个系统移植到另一个系统。在任何地方,都可以用C++从事任何编程...

    C++连接SQL数据库分步骤进行

    2.需要在ODBC中进行数据源配置,数据源选\”SQL SERVER”,登录方式使用“使用输入用户登录ID和密码的SQL SERVER验证”,并填写登录名(sa)和密码,注意一点,密码不能为空,这就意味着你的sa用户必须得有密码。...

    图书管理系统模型MFC-数据结构课设-C/C++

    MFC-school-project ...以上是为像我这样对MFC不感兴趣的人写的,如果你一点开发经验也没有,对趋势也不太了解,那还是老老实实自己边学边做吧,把这个项目做完,对windows的图形界面的消息机制也能算是有所了解了。

    基于C++进行数据结构程序设计【100011659】

    某个太空神秘国度中有很多美丽的小村,从太空中可以想见,小村间有路相连,更精确一点说,任意两村之间有且仅有一条路径。小村 A 中有位年轻人爱上了自己村里的美丽姑娘。每天早晨,姑娘都会去小村 B 里的面包房工作...

    C++MFC教程

    而且C++本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码。 在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不同的成员函数进行处理。下面简单...

    Borland C++3.1

    使用户能充分利用OOP的先进设计方法和省时效率高的特点,它是C语言的进一步发展,它是可移植的,所以用户可以很容易地将一个由C++编写的应用程序从—个系统移植到另一个系统。在任何地方,都可以用C++从事任何编程...

    C+语言直接写+DWG+图形文件接口.rar_DWG读写_c++ 编辑dwg_dwg_dwg文件读写_读写dwg

    改文章提供了很多读写dwg数据的函数示例,有一点C++基础的可以参考下

    迷你版俄罗斯方块C++实现

    虽然是用C++写的,但是没有用到类,大部分都 是C语言的东西。用GDI函数,写的。一共三个文件,一个头文件:Teris.h声明了一些数据类型和函数,定义了一些常量。一个Function.cpp定义了需要用到的函数。一个Teris.cpp...

    C语言课件pdf版(72学时)

    C语言课件pdf版(72学时) 数据类型 函数 指针 文件等

Global site tag (gtag.js) - Google Analytics