atitit.常用编程语言的性能比较 c c++ java



选择一个什么样的程序问题进行这样的测试呢?这是一个很关键的问题,也最容易影响测试的公平性。另外的,对于每种语言,各自的优势都是不同的



#----性能测试标准

首先的,我们的选题中要使用的各种程序语言的最常用的要素。(、数组操作、循环、判断等。)

 对IO的操作也是编程语言重要的内容。

其次的,操作时间一定要长,否则,对于解释性的语言来说是极不公平的

4.避免CACHE的影响...最好每执行一时间重启进程



作者 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax



#---例如



从指定文本文件中搜索指定字符串,计算个数。并且打印出搜索到的个数作为结果输出。 这个算法里面包含了条件判断、循环、数组操作等基本的程序语言因素。 一个多达2G的文本文件,总共有文本1500万行多。这保怔了足够的运行时间(但应该不会太长)





#-----结果

使用PERL5.8解释器,用了8分18秒08完成了1500万行文本的扫描,并得出了正确的结果。

c  平均2分15秒多。

C++程序在测试平台上用了最快4分25秒95 到最慢5分40秒68

汇编 :  基本的和c一样.

JAVA程序做1500万行的文本扫描用了8分21秒18。应该说是几种语言中最慢的,基本上和纯解释的PERL是在同一水准



#----other测试结果

主要的编程语言与吞吐量

语言 吞吐量 特性

C/C++ 100 静态语言、本地代码

Java/C# 1~10 静态语言、VM、字节码

Ruby/Python 0.1~1 动态语言





#-----为什么有些测试证明java跟C C++性能差不多???CPU密集型和io密集型的不同.



一般在配备了JIT(Just In Time)编译器的虚拟机(Virtual Machine,VM)中,Java的运行速度会因JIT 编译的效果变得很快,某些情况甚至会比C 语言更快。



但是这种效果只发生在以CPU 为中心的应用程序中,而在那些与操作系统频繁进行输入输出操作的应用程序中无效。比如,在一个对100MB 的文件进行读取,每次读取1KB 并对行数进行计数的程序中,C 语言要比Java 快上10 倍左右的情况也是常有的。这是因为Java  VM 在系统调用前后,每次都会进行缓存溢出和异常对象的处理。这是无法省去的处理过程,所以使用VM 的处理系统存在一定的局限性。网络游戏的服务器每秒会进行数万次输入输出,这是Java 和C 语言产生速度差异的典型例子。Apache 和MySQL 等服务器软件都用C/C++
编写也是基于同样的原因





其次,动态语言的吞吐量比起Java 更是低了10~100 倍,为什么会这样呢?这是因为每次进行一些处理时,对象调用的方法可能会发生变化,所以每次都必须进行检查确认







#---总结



大部分的操作系统核心几乎都是用纯C写成的,尽管很复杂,但很少有使用面向对象技术的。为什么,不是面向对象技术不好,也不是操作系统核心不够复杂(那什么复杂?),主要的考虑就是效率问题。

c语言的性能是c++的2.5倍,, 是java的4倍..  (通常状态下), 要是io密集型能10倍的区别...



顺带提一下,Google 的Go 语言是一种静态的、本地执行的语言,它具有垃圾回收机制,程序员可以在代码的不同部分中选择类型化的强度,既不牺牲服务器的性能又可以提高开发效率,笔者对此十分期待。让人不禁感叹Google 对服务器开发确实颇为了解





 







参考

程序语言效率比较_安全防护_中国网管联盟bitsCN.com.htm

atitit.常用编程语言的性能比较 c c++ java的更多相关文章

  1. Atitit 常用二维码对比(QR、PDF417、DM、汉信码 Aztec code maxicode

    Atitit 常用二维码对比(QR.PDF417.DM.汉信码 Aztec code maxicode DM码则更"小",可在仅仅25mm²的面积上编码30个数字.但也就是因为太小 ...

  2. Atitit 常用比较复杂的图像滤镜 attilax大总结

    Atitit 常用比较复杂的图像滤镜 attilax大总结 像素画滤镜 水彩油画滤镜 素描滤镜 梦幻镜 特点是中央集焦,周围景物朦化微带光晕,使人产生如入梦境的感觉.常用于拍摄婚纱.明星照,也用于其它 ...

  3. Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库

    Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库1.1. 5种常用的Photoshop滤镜,分别针对照片的曝光.风格色调.黑白照片处理.锐利度.降噪这五大 ...

  4. Atitit.常用的gc算法

    Atitit.常用的gc算法 1.1. 记-清除算法1 1.2. 复制算法1 1.3. 标记-整理算法2 1.4. 分代收集算法2 1.1. 记-清除算法 最基础的收集算法,算法分为标记和清除两个阶段 ...

  5. Atitit. 常用街机系统and 模拟器总结 snk neo geo cps mame sfc smc

    Atitit. 常用街机系统and 模拟器总结 snk neo geo cps mame sfc smc 1. #-------常用 游戏类型 1 2. 街机的历史 2 3. #=========== ...

  6. atitit.高级编程语言的特性 and 未来趋势与进化.doc

    atitit.高级编程语言的特性 and 未来趋势与进化.doc 1 编程语言的发展历程 1 1.1 编程语言的进化,起始发现背后的思想 :不论什么两个系统之间的复杂性,都能够通过加入一个抽象层要屏蔽 ...

  7. Atitit 常用sdk 模块 组织架构切分 规范与范例attilax总结

    Atitit 常用sdk 模块 组织架构切分 规范与范例attilax总结 常用200个模块 2017/04/12  22:01    <DIR>          acc 2017/04 ...

  8. Atitit.h5 web webview性能提升解决方案-----fileStrore缓存离线存储+http方案

    Atitit.h5 web webview性能提升解决方案-----fileStrore缓存离线存储+http方案 1. 业务场景 android+webview h5 css背景图性能提升1 2. ...

  9. Atitit.常用分区api的attilax总结

    Atitit.常用分区api的attilax总结 1. Api 来源与oracle与mysql1 1.1. 分区定义partition by range (uid)  使用VALUES LESS TH ...

随机推荐

  1. Adapter(适配器)-类对象结构型模式

    1.意图 将一个类接口转换成客户希望的另外一个接口.Adapter模式使那些原本不能一起工作的类,可以一起工作. 2.别名 包装器 Wrapper. 3.动机 一个应用可能会有一些类具有不同的接口,并 ...

  2. [原创][LaTex]LaTex学习笔记之框架及宏包

    0. 简介 LaTex在书写文档时的最基本单元就是首部的写作,变相的也可以说是头文件.本文章就来总结一下文档的基本格式和常用宏包. 1. 基本单元 基本单元需要对LaTex语法有一定的了解,这个很简单 ...

  3. Centos6.7 python2.6升级到python2.7

    查看python版本: #python -V Python 2.6.6 1.下载python 2.7.3 #wget http://python.org/ftp/python/2.7.3/Python ...

  4. Kindeditor为什么提交后获取不到值

    LinkButton不是表单提交方式所以获取不到.如果用button submit提交方式就是form提交方式后台就能获取到值 取得编辑器的HTML内容.KindEditor的可视化操作在新创建的if ...

  5. easyul获取各种属性ID 和赋值

    //span赋值 $('#state1').text("审核通过"); //textarea赋值 $("#memo").val('');  //隐藏域 $(&q ...

  6. textarea 怎么固定大小,不让调整

    1:彻底禁用拖动(推荐) resize: none; 2:只是固定大小,右下角的拖动图标仍在 width: 200px; height: 100px; max-width: 200px; max-he ...

  7. DIV半透明,内层不受影响的代码

    <div style=" background:rgba(0, 0, 0, 0.1)"><br /> <img src="http://im ...

  8. C# 编程指南-事件

    来自微软官方的msdn:   首页:https://msdn.microsoft.com/zh-cn/library/ms366768.aspx   1.如何:订阅和取消订阅事件   2.如何:发布符 ...

  9. 实现的一个ajax请求组件 有加载效果

    var zhanglei_Ajax = function(url,data,fn){ var str = '<div class="mask" style="pos ...

  10. lsslot

    lsslot 命令 用途 显示动态可重新配置的插槽(比如热插拔)及其特性. 语法 lsslot -c ConnectorType [ -a | -o | -l DeviceName | -s Slot ...