`
idning
  • 浏览: 138432 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

c/java/python性能比较

阅读更多

测试环境: 8核8g内存

 

1. 文件读写测试:

图中横坐标:

2表示2^2M = 4M

13表示2^13M = 8G

 

从上图 可以看出:

     c/java/python在文件读写方面性能差别不是很大,

 

  • 在文件大小>4G的时候,文件读写速度都局限于磁盘IO 速度.
  • 在文件大小<2G的时候,文件读写速度基本上都是文件系统cache影响的速度.

2. 循环测试:

做1073741824 个循环(1G),测试需要的时间,从而计算每种语言每秒运行的循环数:

 

 

java:   643730110

c:         293693059

python: 4683359

 

可以看出,python的循环性能最差.

但是比较奇怪的是java比c好。。。

 

 

 

所有代码见附件

  • 大小: 50.9 KB
分享到:
评论
19 楼 idning 2010-07-01  
murainwood 写道
楼主,编译器优化的程度不同,会带来不同的“假象”
这个网站比较有趣,各种编程语言的性能对比测试

http://shootout.alioth.debian.org/

你可以看一看


这个好,谢谢:)
18 楼 jjcang 2010-07-01  
lz主要是想说明他会3种编程语言
17 楼 murainwood 2010-06-30  
icefishc 写道
mathfox 写道
每次都想看JAVA 性能是不是最差的。

每次都可能看到JAVA性能在测试中不错。

每次都要看到有人骂JAVA性能差。



因为这种测试离实际应用差得太远了

首先是离实际应用很远,其次么...我曾看见生产机上的JVM用Client模式跑JBoss的,Heap也没调整,更别说GC的参数调整。
搞Java的垃圾程序员太多了,没办法。谁让这东西门槛低呢?同理可见高考扩招。
16 楼 murainwood 2010-06-30  
楼主,编译器优化的程度不同,会带来不同的“假象”
这个网站比较有趣,各种编程语言的性能对比测试

http://shootout.alioth.debian.org/

你可以看一看
15 楼 gundumw100 2010-06-30  
除了在游戏方面能比较出来,其他地方都可以忽略不计。
14 楼 dongya1987 2010-06-30  
<div class="quote_title">idning 写道</div>
<div class="quote_div">
<p>测试环境: 8核8g内存</p>
</div>
<p>这个是关键</p>
13 楼 fengzl 2010-06-30  
图不错,用什么生成的
12 楼 pangyi 2010-06-30  
Java的性能在某些方面确实接近于C\C++
11 楼 nakupanda 2010-06-30  
JRE某版本之后JAVA性能似乎就不错了?
10 楼 icefishc 2010-06-29  
mathfox 写道
每次都想看JAVA 性能是不是最差的。

每次都可能看到JAVA性能在测试中不错。

每次都要看到有人骂JAVA性能差。



因为这种测试离实际应用差得太远了
9 楼 mathfox 2010-06-29  
每次都想看JAVA 性能是不是最差的。

每次都可能看到JAVA性能在测试中不错。

每次都要看到有人骂JAVA性能差。


8 楼 superlittlefish 2010-06-29  
没有什么意义.
7 楼 woniu1983 2010-06-29  
同意楼上, 内存也是需要比较的一个方面。

6 楼 jackerxff 2010-06-29  
应该再比较一下消耗的内存大小,Java消耗内存是很大的
5 楼 hareamao 2010-06-29  
又是性能比较……
4 楼 idning 2010-06-29  
关于优化:

给gcc添加了-O2选项, 这时候c语言loop需要的时间变为0.

于是,将main返回值改为 sum:
原来: return 0;
现在: return sum;

这样,c语言和java的1G个循环需要的时间差不多:
引用

cc -O2 -o loop loop.c
./loop 1073741824
0.736
javac Loop.java
java Loop 1073741824
0.869


3 楼 idning 2010-06-29  
docpart 写道
看到你的循环测试结果,就猜想你用了空循环,打开一看,果然如此。

不妨在循环体内增加一个语句,例如while(--i){if(i%2==0)j+=i;},或用一些实际有循环的代码来测试,看看结果如何。

有些编译器可能为了应付一些标准测试而做了特别优化,这些优化可能在实际当中根本毫无用处,以至于测试结果显示性能第一,实际应用人们却感觉慢,往往还以为自己的感觉出了问题。


我修改了测试代码:
    while (loop_cnt-- > 0) {
        sum += loop_cnt;
    }
c和java的差别更大:
c:      287,096,744
java: 1,234,186,004  (每秒1G个循环)



model name	: Intel(R) Xeon(R) CPU           E5420  @ 2.50GHz
stepping	: 6
cpu MHz		: 2493.795

2 楼 docpart 2010-06-28  
看到你的循环测试结果,就猜想你用了空循环,打开一看,果然如此。

不妨在循环体内增加一个语句,例如while(--i){if(i%2==0)j+=i;},或用一些实际有循环的代码来测试,看看结果如何。

有些编译器可能为了应付一些标准测试而做了特别优化,这些优化可能在实际当中根本毫无用处,以至于测试结果显示性能第一,实际应用人们却感觉慢,往往还以为自己的感觉出了问题。
1 楼 mathgl 2010-06-25  
IO基本上都是用同一套底层的api,差别很有限....

相关推荐

    C/C++/JAVA/Python代码统计工具

    本文将详细讲解“C/C++/JAVA/Python代码统计工具”,包括其功能、使用方法以及如何进行代码差异统计。 首先,这个工具支持多种编程语言,如C、C++、Java和Python,这些都是广泛应用的编程语言。通过统一的统计方法...

    Java中调用Python代码

    在IT行业中,跨语言交互是常见的需求,例如在Java项目中有时需要利用Python的强大功能,如数据处理、科学计算或机器学习等。本篇将详细探讨如何在Java中调用Python代码,以便充分利用两种语言的优点。 首先,我们...

    Python与C/Java语言设计及应用比较研究.zip

    这篇压缩包内的文件"Python与C/Java语言设计及应用比较研究.pdf"很可能是对这三种语言在设计哲学、语法特性、执行效率、应用领域等方面进行深入探讨的学术或技术文档。下面我们将围绕这些关键点展开讨论。 首先,...

    用java调用python

    - 性能:Java 调用 Python 可能会有性能损失,尤其是涉及大量数据交换时。 - 集成测试:确保对 Java 和 Python 间的接口进行充分的测试,保证整体系统的稳定性和可靠性。 在实际开发中,选择合适的调用方式应根据...

    python 优缺点和java与python的jar

    通过Jython,Python开发者能够访问Java的类库,包括Java的集合框架、网络编程、数据库连接等功能,同时也可以利用Java的高性能和成熟的企业级服务。这在需要混合使用Python和Java的大型系统中特别有用,例如在已有...

    AIS C语言,Java,Python 解析器

    C语言版本的AIS解析器通常用于需要高性能和低延迟的应用中,广泛用于嵌入式系统开发。 Java版本的AIS解析器适合需要跨平台运行的应用 Python版本的AIS解析器适合用于数据分析、科学计算和教学等领域。

    浅析C语言、Java、Python的数组合并方法.pdf

    Python虽然在代码简洁性上具有优势,但其运行效率相比C和Java来说要低。因此,根据实际的应用场景和需求选择合适的数组合并方法是非常重要的。 在研究C语言、Java和Python三种语言的数组合并方法时,作者们通过编写...

    python,c/c++,java,nodejs,php,go 本地代码运行

    标题中的“python,c/c++,java,nodejs,php,go 本地代码运行”表明这是一个支持多种编程语言本地执行的工具或框架。它旨在提供一个统一的平台,使得开发者可以在本地计算机上方便地运行和测试这些语言编写的代码。下面...

    Python教程-解释器及性能优化.pdf

    CPython适合通用开发,Jython和IronPython分别适用于Java和.NET环境,IPython适合交互式工作,PyPy和Shed Skin则为追求性能的项目提供了可能。理解这些解释器的特性并根据实际情况进行选择,是优化Python应用程序的...

    Matlab代码verilog-University-Code:(C/C++/Java/Python/Verilog/VHDL/Assembl

    2. **C/C++**:C和C++是底层编程语言,适用于系统编程、游戏开发、嵌入式系统以及对性能有高要求的应用。在大学课程中,学生通常会学习如何使用它们来理解计算机内存管理、指针操作和面向对象编程概念。 3. **Java*...

    浅析Java、C/C++、JavaScript、PHP、Python分别用来开发什么?

    Python也常用于开发原型和最终产品,因为它可以快速实现功能并可以通过C/C++等语言对性能敏感的部分进行优化。 总的来说,每种编程语言都有其特点和适用场景。在选择使用哪种编程语言时,需要根据项目需求、开发...

    mirrors-hp-socket-master.zip_java udp_python udp_socket_socket 高

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程...

    编写“高性能”Python代码

    Python作为一种解释型语言,在性能上往往不如编译型语言如C或Java。然而,通过合理的策略和工具的选择,我们可以显著提高Python应用程序的执行效率。 #### 为什么是“高性能” 随着数据量的增长和技术需求的变化,...

    浅析C语言、Java、Python的数组合并方法.zip

    本文将深入探讨C语言、Java和Python这三种不同编程语言中数组的合并方法,旨在帮助开发者更好地理解和应用这些语言。 首先,我们来看C语言。C语言中的数组是静态分配的,其大小在声明时必须确定,且不能动态改变。...

    java,python,大数据,js,javaWeb项目,数据库,等等集合所有教程

    3. **JNI**:Java Native Interface,允许Java代码调用C/C++代码,增强性能或利用已有库。 这些教程覆盖了软件开发的多个领域,为开发者提供了丰富的学习资源,无论是初学者还是有一定经验的开发者,都能从中找到...

    5、六种主流编程语言C++、PYTHON、JAVA对比.pdf

    C++、Python和Java是目前主流的编程语言,在软件开发领域中被广泛使用。它们各自有着不同的特点和适用场景。C++具有较强的性能和效率,适用于系统底层开发和游戏编程;Python则以其简洁性和强大的库支持著称,在数据...

    java,python,测试面试宝典.zip

    8. **Python性能优化**:理解GIL(全局解释器锁)和多进程、多线程的使用,以及Cython、PyPy等优化工具。 测试宝典: 测试是确保软件质量的重要环节,测试宝典会包含以下关键点: 1. **测试基础**:了解测试的基本...

    python 有用资料

    - **PsycoPyrex**:优化Python性能的工具,通过将Python代码转换为C代码来提升执行速度。 ### Python代码质量检查 - **Pyflakes**, **PyChecker**, **PyLint** - 分别用于语法检查、类型检查和代码风格检查,帮助...

    Python-将机器学习模型转换成零依赖本机代码JavaCPython等

    本主题主要探讨如何将Python中的机器学习模型转换为Java、C或其他语言的零依赖本地代码。 描述中提到的“Transform ML models into a native code (Java, C, Python, etc.) with zero dependencies”进一步强化了这...

    c,c++,java,sql,php,mysql,python,javascrip等chm文档

    1. **C语言**:C是最基础的编程语言之一,它提供了低级别的内存访问和控制,是系统编程和编写高性能软件的理想选择。C语言的CHM文档会涵盖基本语法、数据类型、控制结构、函数、指针等核心概念。 2. **C++**:作为...

Global site tag (gtag.js) - Google Analytics