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

java比.net(C#)慢这么多么?

    博客分类:
  • Java
阅读更多

今天听到同事说.net的执行效率比java快很多,我当时就说没有,其实他们都是差不多的,都是基于虚拟机技术,只是在windwos平台上微软会对自 己的技术做一定的优化。后来自己也做了一个测试,结果太出乎我的意料了,仅仅是一个for循环的测试,结果确实是.net(3.5)的效率比 java(5.0)要高出很多,测试程序如下:
C#程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            long j = 1;
            System.Console.WriteLine(System.DateTime.Now.ToString());
            for (long i = 1; i < 10000000000; i++)
            {
                j = j + 1;
            }
            System.Console.WriteLine(System.DateTime.Now.ToString());
           
        }
    }
}

使用vs2008编写,.net 3.5,使用release方式生成exe文件。在命令行下执行,执行时间是21秒。

java程序,eclipse编写,java 5.0

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Date date = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        System.out.println(formatter.format(date));
        long j = 1L;
        for(long i = 1;i < 10000000000L;i++){
            j = j + 1;
        }
        Date date2 = new Date();
        System.out.println(formatter.format(date2));

    }

}

eclipse编写并且编译,基于java 5.0,同样在命令行下运行执行时间是1分11秒。

这样看来至少是在整数运算上java的性能就差很多啊!为什么会这样呢?
或者是我的测试程序有问题,请指教.

分享到:
评论
21 楼 dwangel 2009-07-28  
话说,这个不是测循环的效率,是测格式化时间类的效率。
貌似SimpleDateFormat效率没c#的好。
不要用SimpleDateFormat,直接用Date的toString()

另外,java的string……
20 楼 diddyrock 2009-07-15  
java透明而且便宜啊,性能差点可以忍受,真的技术型的公司的主打产品里面应该不会用太多.net吧
19 楼 ray_linn 2009-07-10  
木哥哥 写道

这个测试没有意义.比些不规则的测试吧.

java的我不知道,像这个循环.net的就是假的,编译器它不会真去给你循环,他一看你是个规律的计算,ok,直接给结果了.哈



。。。胡扯。
18 楼 JeffreyZhao 2009-07-10  
木哥哥 写道

java的我不知道,像这个循环.net的就是假的,编译器它不会真去给你循环,他一看你是个规律的计算,ok,直接给结果了.哈

如果是假的,那么如何解释花费11秒,而不是瞬间出解?
如果你看了汇编,就知道不会这样优化的。
17 楼 qhfrose 2009-01-15  
我在Ubuntu 8.04.2下面按了个VirtualBox,装了个WinXP SP3,.Net Framework 3.5 Sp1 ,sun jdk6u11.运行结果是C#Release是18秒多,java是30秒多。
直接在Ubuntu 运行C#(还是在windows下编译的,用mono 1.2.6运行)花了44秒多。java的情况是,用sun jdk1.5u12,花了39秒多,用sun jdk1.6u7花了22秒。
16 楼 gangezhizhi 2009-01-13  
这种测试并不科学,变化太多。在说,程序也不能唯性能为首,一点点快慢不影响
15 楼 木哥哥 2009-01-12  

这个测试没有意义.比些不规则的测试吧.

java的我不知道,像这个循环.net的就是假的,编译器它不会真去给你循环,他一看你是个规律的计算,ok,直接给结果了.哈
14 楼 wzpwork 2008-12-31  
这个可比性不强,不同的JVM有很大差距. 楼主可以试一下SUN,IBM,BEA(现在被ORACLE买下了)的JVM下的JAVA跟C#的差异.
13 楼 BigBlue 2008-11-11  
我的测试结果:相差不大
Sun Java 1.5.0-12
=====================
-server

29297
29078
29500

-client

51828
51812
51672


.NET 3.5 sp1
=====================
release版
00:00:18.7968750
00:00:18.8750000

Debug版
00:00:49.0156250
00:00:50.5468750
12 楼 sdh5724 2008-11-08  
今天, 我用IBM JDK 测试了下, 时间不到1秒!!!
用JROCKIT测试, 时间是30秒

以上都是JAVA6兼容的JDK
11 楼 sdh5724 2008-11-01  
补充下, 对于这个测试, JVM的内存大小, JDK的版本, 还是JVM的运行模式都没有任何的影响。
10 楼 sdh5724 2008-11-01  
首先, 我想让大家知道一个事情, 就是JDK的任何版本都没有经过INTEL的特殊优化, 所以, 这个比较没有什么意义。 JAVA7开始, SUN已经和INTEL合作优化了。

另外, 我在我的笔记本上机器上跑了下,

2008-11-01 11:28:21
2008-11-01 11:28:30
===========
2008-11-01 11:33:08
2008-11-01 11:33:18

不过, 我没有MS的软件,JAVA5/JAVA6 都才才9秒-10秒的执行时间, 对于类似的循环, 大部分的语言都应该差异没有那么大吧?

OS: Linux HELLO 2.6.27-7-generic #1 SMP Thu Oct 30 04:12:22 UTC 2008 x86_64 GNU/Linux
cpu:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel(R) Core(TM)2 CPU         T7400  @ 2.16GHz
stepping : 6
cpu MHz : 1000.000
cache size : 4096 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 4322.44
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

9 楼 kimmking 2008-09-25  
Durian 写道
mathgl 写道
用 java se 6.0以上看看。。

ms 的优化技术还是很好的

-------------------
ms的优化根本不值一提。
想当年borland的 c++ complier把ms的c打得满地找牙
现在也卖掉啦。

那是complier大牛 Anders同学加盟microsoft前的事吧,都10多年了。
1
8 楼 Durian 2008-09-24  
mathgl 写道
用 java se 6.0以上看看。。

ms 的优化技术还是很好的

-------------------
ms的优化根本不值一提。
想当年borland的 c++ complier把ms的c打得满地找牙
现在也卖掉啦。
7 楼 QuakeWang 2008-08-07  
一个简单的整数循环说明不了问题,而且除了MS自己的东西,大部分语言在Linux上的性能要比在Windows好。
推荐一个网站:
http://shootout.alioth.debian.org/gp4/index.php
做各种语言实现多个常见运算(binary-trees, recursive...)的性能对比:Java/Ruby/Python/C/C++ ...
可以看一下Java和C++的对比,大部分在1.0~2.0之间
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang;=java&lang2=gpp

6 楼 ray_linn 2008-08-07  
建议楼上再试验一下浮点运算,比如sin,cos之类的,C#还是会比java高一大截。
5 楼 vdgame 2008-08-06  
我前段时间用八皇后递归算法,比较了一下c、java和c#:

环境 耗时(毫秒) 编译选项
win2003 R2 vc6 21010 cl /O2
win2003 R2 vc2008 19007 cl /O2 /arch:SSE2 /fp:fast
win2003 R2 gcc(msys) 16523 (MinGW/msys)
win2003 R2 sun JDK 6 29152
win2003 R2 c# 2.0/3.5 25126
ubuntu 8.04 sun JDK 6 31320
ubuntu 8.04 GCC 4.2.3 12230 gcc -O3 -msse2 -mmmx -mfpmath=sse -funroll-loops -march=pentium4 -pipe -fomit-frame-pointer
ubuntu 8.04 ibm JDK 6 20304

结论:
1、sun jdk6在linux下比Windows2003下慢 7.44%
2、VC2008编译的C代码比VC6快 10.54%
3、Win2003下GCC(msys)编译的C代码比VC2008的快 15.03%
4、Linux下GCC编译的代码比VC2008的快 55.41%
5、linux IBM JDK6 比 SUN JDK6快 43.58%
6、linux IBM JDK6 比 VC6编译的代码快 3.48%
7、linux IBM JDK6 比 C#的代码快 23.75%
7、Windows下C#比sun Java6快 16.02%
4 楼 mathgl 2008-08-02  
用 java se 6.0以上看看。。

ms 的优化技术还是很好的
3 楼 dengyin2000 2008-07-31  
>> 使用release方式生成exe文件。

这里会不会有问题? 如果java用jit呢?
2 楼 wangxinyaqin 2008-07-31  
没有可比性,不能这么看,要看系统整体运行的情况

相关推荐

    C#微软培训资料

    1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11 第二章 运行环境 全面了解.NET.12 2.1 .NET 结构.12 2.2 公用语言运行时环境与公用语言规范.13 2.3 开 发 工 具 .17 2.4 小 结 .19 第三章 编写...

    用HttpClient来模拟浏览器GET POST

    为了使我们的程序能使用别人所提供的服务页面,就要求程序首先登录后再访问服务页面,这过程就需要自行处理cookie,想想当你用java.net.HttpURLConnection来完成这些功能时是多么恐怖的事情啊!况且这仅仅是我们所说...

    WPF 如何找到资源文件路径包含 # 号的文件.rar

    在.NET框架中,Windows Presentation Foundation(WPF)提供了一种强大的UI设计和应用程序开发平台。在WPF项目中,我们经常需要访问和加载资源文件,如图像、样式表、字体等。然而,当资源文件的路径中包含特殊字符...

    基于SUMO的交通拥堵预测与路径动态规划实现思路.pdf

    基于SUMO的交通拥堵预测与路径动态规划实现思路.pdf

    基于STM32的智能双电梯控制系统(带报警+到楼层提示及楼层检测)- Proteus(原理图、仿真图、源代码).pdf

    基于STM32的智能双电梯控制系统(带报警+到楼层提示及楼层检测)- Proteus(原理图、仿真图、源代码).pdf

    基于Java+Mysql的图书管理系统设计实现源码+文档说明.zip

    基于Java+Mysql的图书管理系统设计实现源码+文档说明.zip个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于Java+Mysql的图书管理系统设计实现源码+文档说明.zip基于Java+Mysql的图书管理系统设计实现源码+文档说明.zip基于Java+Mysql的图书管理系统设计实现源码+文档说明.zip基于Java+Mysql的图书管理系统设计实现源码+文档说明.zip基于Java+Mysql的图书管理系统设计实现源码+文档说明.zip基于Java+Mysql的图书管理系统设计实现源码+文档说明.zip基于Java+Mysql的图书管理系统设计实现源码+文档说明.zip基于Java+Mysql的图书管理系统设计实现源码+文档说明.zip基于Java+Mysql的图书管理系统设计实现源码+文档说明.zip基

    美赛参赛指南资料.pdf

    美赛参赛指南

    2025年安徽芜湖公交路线及站点矢量shp数据.zip

    2025年安徽芜湖公交路线及站点矢量shp数据.zip

    全国计算机等级考试大纲-操作系统详解及四级备考指导

    内容概要:本文为全国计算机等级考试四级操作系统的详细考试大纲,针对计算机专业人员备考所需知识进行全面梳理。内容涵盖从操作系统基本概念到复杂技术细节如进程线程模型、同步机制、存储管理方案(含虚存和页式储存管理),文件系统(含逻辑与物理结构,性能优化)设计实现,I/O 设备管理以及死锁相关理论和技术要点的理解与应对方案等方面,旨在让学生对现代操作系统形成完整的认识并能够解决实际应用中的常见挑战。 适合人群:即将参加计算机等级考试四级的专业考生,尤其是有意向深造和巩固自身操作系统基础知识的人群。 使用场景及目标:帮助学生复习操作系统的重要知识点和理论基础,为即将到来的大纲规定考试做足准备;提升他们对于计算机运作原理的深度认知,从而增强解决计算机内部协调运作所遇瓶颈的能力。 其他说明:文中不仅介绍了操作系统的各个重要组件及其工作流程,还探讨了新设计理念的发展方向。这有助于培养未来计算机从业人员具备紧跟时代步伐更新专业知识的习惯和技术前瞻性视角。同时,提供了具体题型和分数设置供考前冲刺之用。

    daq多通道采集labview程序

    daq采集卡多通道同步采集程序

    numpy-2.2.0-cp313-cp313t-macosx_14_0_arm64.whl

    该资源为numpy-2.2.0-cp313-cp313t-macosx_14_0_arm64.whl,欢迎下载使用哦!

    Oracle ADF移动设备应用开发:跨平台解决方案与融合中间件集成

    内容概要:本文档主要介绍了 Oracle ADF (Application Development Framework) 在开发移动设备应用程序方面的技术和特点。主要内容包括对ADF Mobile的概述、移动浏览器的兼容性和呈现支持、移动优化的用户界面创建方法以及与企业应用程序及融合中间件(Fusion Middleware)的集成方法。ADF Moblie 提供了一套完整的开发方案,支持在一次构建下能适配于iOS、Android等多个操作系统平台上运行,并且可以无缝集成到现有的企业级系统当中,在保持一致的服务水平的同时,为开发人员提供了便捷高效的开发环境。 适合人群:熟悉Web应用程序及中间件的企业级开发人员、项目经理以及希望进入移动应用市场的专业技术人员。 使用场景及目标:针对需要将现有业务拓展到移动端的企业来说,ADF Mobile能够快速有效地完成从桌面到移动设备的应用迁移,减少重复劳动并提升用户体验。 其他说明:文档还包括对ADF Moblie未来发展路线图的讨论,比如即将增加对HTML5的支持、更多种类硬件API的集成(如摄像头),还有单点登录和基于角色的安全访问等功能。同

    DeepSeek如何重塑大数据:数势科技SwiftAgent创新分享.pdf

    DeepSeek如何重塑大数据:数势科技SwiftAgent创新分享.pdf

    清华大学:DeepSeek赋能家庭教育,智能AI引领个性化学习新时代

    内容概要:本文由清华大学团队编撰,详细介绍了DeepSeek如何赋能家庭教育。当前家长面临着辅导时间不足、学习辅导能力有限、亲子冲突频发及焦虑情绪普遍的困扰,这些问题严重影响了家庭教育的效果。针对这些痛点,DeepSeek提出了AI技术赋能家庭教育的新模式,涵盖教育系统的拆分分析、AI技术与传统教育的区别、AI家庭教育的优点及其可能引发的担忧(如孩子是否会因此变懒,AI会不会影响独立思考能力)。文章阐述了AI在教育中的优势:多元化的知识生态、数据驱动的经验代替、主动学习代替被动吸收,线性进程变为跨界非线性学习,互动模式从单一走向多方协同,解决了传统教育中的若干问题。并且,文中给出了使用DeepSeek的四种家长行动指南——设定使用规则、安排混合学习、能力审查测试,并强调了家长在教育中角色的必要转变及家长使用AI时需警惕的风险。同时列举了多个使用案例,包括数学解题分步拆解、作文语法修改润色、科学实验过程记录、生成教育PPT及思维导图等。 适用人群:适用于所有关注孩子教育并希望通过新技术辅助教育的家庭。特别是那些有3至18岁孩子的家长,他们在日常忙碌的同时希望保证对孩子教育的关注与投入,也希望了解和使用先进技术辅助孩子的学习过程。 使用场景及目标:①通过定制化学习计划,提升孩子的基础知识掌握与学习效果评估;②利用深度思考模式深入理解课程难点,通过联网模式探索最新科研资料,拓宽视野;③加强家校协作,形成更紧密的家庭-学校联动;④借助AI工具帮助识别孩子性格、兴趣倾向及天赋特征;⑤在家庭中开展多样化的学习活动,如互动游戏或角色扮演游戏;⑥通过数据分析和反馈闭环机制,实时监测孩子成长状况并相应调整教育策略; 其他说明:文中提及了一些实用技巧和注意事项,比如要根据孩子的实际需求和年龄特点,谨慎选择合适的学习内容,并在过程中不断审视和评价教育成果。另外也提醒家长们,即便有了强大工具辅助,也不能完全放弃自身的引导责任。此外,为了最大化DeepSeek的效益,文中附有许多详细的实操案例指引。最后值得注意的是,虽然AI工具极大地提高了学习效率和支持力度,但它并不是万能解决方案,还需要人机互补才能发挥最好的教育效果。

    基于STM32的电气火灾监测无线有线传输系统(含电压、电流、温度、电量监测及报警功能).pdf

    基于STM32的电气火灾监测无线有线传输系统(含电压、电流、温度、电量监测及报警功能).pdf

    工具变量-期刊分区表(经济学、管理学类)数据集.xlsx

    详细介绍及样例数据:https://blog.csdn.net/li514006030/article/details/146430951

    微信小程序-基于微信小程序的校园互助平台包括源码+数据库(高分毕设)

    微信小程序-基于微信小程序的校园互助平台包括源码+数据库(高分毕设),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 微信小程序-基于微信小程序的校园互助平台包括源码+数据库(高分毕设)微信小程序-基于微信小程序的校园互助平台包括源码+数据库(高分毕设)微信小程序-基于微信小程序的校园互助平台包括源码+数据库(高分毕设)微信小程序-基于微信小程序的校园互助平台包括源码+数据库(高分毕设)微信小程序-基于微信小程序的校园互助平台包括源码+数据库(高分毕设)微信小程序-基于微信小程序的校园互助平台包括源码+数据库(高分毕设)微信小程序-基于微信小程序的校园互助平台包括源码+数据库(高分毕设)微信小程序-基于微信小程序的校园互助平台包括源码+数据库(高分毕设)微信小程序-基于微信小程序的校园互助平台包括源码+数据库(高分毕设)

    Kashani Sh. - Deep Learning Interview.pdf

    Kashani Sh. - Deep Learning Interview.

    架构师笔记-系统架构设计师第二版

    架构师笔记-系统架构设计师第二版

    是一个专为Windows用户设计的免费Android应用反编译和打包工具 这款工具集成了多种实用功能,包括解包、搜索、重新打包、签名以及批量打包,使得Android应用的逆向工程过程变得更加简便

    是一个专为Windows用户设计的免费Android应用反编译和打包工具 这款工具集成了多种实用功能,包括解包、搜索、重新打包、签名以及批量打包,使得Android应用的逆向工程过程变得更加简便

Global site tag (gtag.js) - Google Analytics