测试条件:

Java版本: Java 8,

.NET版本:v4.0, Release模式,针对x86平台优化

单线程模式。

测试1:(测试1的代码摘自http://blog.csdn.net/houjin_cn/article/details/5957432

Java代码:

package javatest;

public class temp
{
public static void main(String[] args)
{
long nn = System.nanoTime();
int times = 9999;
factorial(times);
nn = System.nanoTime() - nn;// 单位为ns(纳秒,即10的负9次方秒),
System.out.println((nn / 1000000) + " ms");
} private final static void factorial(int n)
{
int[] bs = new int[16384];
int top = 1;
bs[0] = 1;
for (int i = 2; i <= n; i++)
{
int w = 0;
for (int ic = 0; ic < top; ic++)
{
int tn = bs[ic];
tn = tn * i + w;
w = tn >>> 16;
bs[ic] = tn & 0xffff;
}
if (w != 0)
{
bs[top++] = w;
}
}
}
}

C#代码:

static void Main(string[] args)
{
long nn = System.DateTime.Now.Ticks;
factorial();
nn = System.DateTime.Now.Ticks - nn;// 单位为刻度数,1刻度数=10的负7次方秒
System.Console.Out.Write((nn / ) + " ms");
System.Console.Out.WriteLine();
Console.Read();
} static void factorial(int n)
{
int[] bs = new int[];
int top = ;
bs[] = ;
for (int i = ; i <= n; i++)
{
int w = ;
for (int ic = ; ic < top; ic++)
{
int tn = bs[ic];
tn = tn * i + w;
w = tn >> ;
bs[ic] = tn & 0xffff;
}
if (w != )
{
bs[top++] = w;
}
}
}

测试结果

Java:

C#:

结论1:Java速度是C#的2.8倍

测试2:同一个函数,执行两亿次。

Java代码(省略了打印):

package javatest;

import java.text.DecimalFormat;
import java.util.Date; public class speedTest
{
public static void main(String[] args)
{
int i = 0;
int max = 200000000;//两亿次
Date start = new Date();
while (i++ < max)
{
transform();
}
Date end = new Date();
long diff = end.getTime() - start.getTime(); StringBuffer maxToshow=new StringBuffer();
maxToshow.append(max);
int count=0;
for(int a=1;a<String.valueOf(max).length();a++)
{
if(a%3==0)
{
count++;
maxToshow.insert(String.valueOf(max).length()-count*3, ",");
}
}
//String s = String.format("it takes %f seconds to run %s loops",
// diff / 1000.00, new DecimalFormat(",###").format(max));
String s = String.format("it takes %f seconds to run %s loops",
diff / 1000.00, maxToshow.toString());
System.out.println(s);
} public static void transform()
{
String str = "Pcybgle rfgq rsrmpgyj fyq npmzyzjw pcgldmpacb wmsp glrcpcqr gl sqgle Nwrfml - wms qfmsjb zc cyecp rm ynnjw Nwrfml rm qmjtgle wmsp pcyj-umpjb npmzjckq. Ufcpc qfmsjb wms em rm jcypl kmpc?";
for (int i = 0; i < str.length(); i++)
{
char c = str.charAt(i);
if (c >= 'a' && c <= 'z')
{
c += 2;
if (c > 'z')
{
c -= 26;
}
// System.out.print(c);
} else if (c >= 'A' && c <= 'Z')
{
c += 2;
if (c > 'Z')
{
c -= 26;
}
// System.out.print(c);
}
else
;// System.out.print(c);
}
}
}

C#代码(省略了打印):

static void Main(string[] args)
{
int i = ;
int max = ;// 两亿次
DateTime start = DateTime.Now;
while (i++ < max)
{
transform();
}
Console.WriteLine();
DateTime end = DateTime.Now;
Console.WriteLine("it takes {0} seconds to run {1} loops",
(end - start).TotalSeconds, max);
Console.Read();
} public static void transform()
{
String str = "Pcybgle rfgq rsrmpgyj fyq npmzyzjw pcgldmpacb wmsp glrcpcqr gl sqgle Nwrfml - wms qfmsjb zc cyecp rm ynnjw Nwrfml rm qmjtgle wmsp pcyj-umpjb npmzjckq. Ufcpc qfmsjb wms em rm jcypl kmpc?";
for (int i = ; i < str.Length; i++)
{
int c = str[i];
if (c >= 'a' && c <= 'z')
{
c += ;
if (c > 'z')
{
c -= ;
}
// Console.Write((char)c);
}
else if (c >= 'A' && c <= 'Z')
{
c += ;
if (c > 'Z')
{
c -= ;
}
// Console.Write((char)c);
}
else
;// Console.Write((char)c);
}
}

测试结果:

Java:

C#:

结论2:Java速度是C#的3.74倍:

Java和C#运行速度对比:Java比C#快约3倍的更多相关文章

  1. Java和Python运行速度对比

    Java和Python运行速度对比:同一个函数运行一百万次,Java耗时0.577秒,Python耗时78秒--135倍的差距. 版本:Java 8,Python 2.7.10 Java测试代码: i ...

  2. 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制

    内容 1.高级语言的运行机制 2.Java 语言的运行机制 1.高级语言的运行机制 高级语言主要分为编译型语言和解释型语言两类. 编译型语言是指使用专门的编译器.针对特定平台(操作系统)将高级语言源代 ...

  3. 2. Java程序的运行机制

    一.完成一个Java程序的流程:编辑Java源代码→编译Java程序→运行Java程序 1. 在记事本中编写Java程序,然后保存为.java类型文件(Java源文件) 2. 使用javac命令将源文 ...

  4. [零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置

    转自:http://redking.blog.51cto.com/27212/114976 重点要会以下两个方面: 1. 抽象类与接口 2. API==>类集 这是两个最重要部分,这两个部分理解 ...

  5. 2020重新出发,JAVA语言,什么是JAVA?

    @ 目录 什么是 java? JAVA三大体系 Java SE Java EE JavaME java的主要特性和优势 1. 面向对象 2. 平台无关性 3. 可移植性 4. 简单性 5. 解释执行 ...

  6. JVM学习(1)——通过实例总结Java虚拟机的运行机制

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: JVM的历史 JVM的运行流程简介 JVM的组成(基于 Java 7) JVM调优参数:-Xmx和-Xms ...

  7. Java虚拟机及运行时数据区

    1.Java虚拟机的定义 Java虚拟机(Java Virtual Machine),简称JVM.当我们说起Java虚拟机时,可能指的是如下三种不同的东西: 抽象的虚拟机规范 规范的具体实现 一个运行 ...

  8. 如何利用 JConsole观察分析Java程序的运行,进行排错调优

    原文链接:http://jiajun.iteye.com/blog/810150 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...

  9. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序

    如何用javac 和java 编译运行整个Java工程 (转载)  http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...

随机推荐

  1. ios------进度轮

    UIActivityIndicatorView实例提供轻型视图,这些视图显示一个标准的旋转进度轮.当使用这些视图时,最重要的一个关键词是小.20×20像素是大多数指示器样式获得最清楚显示效果的大小.只 ...

  2. zabbix_监控_端口

        目的:监控web主机80端口是否在供提服务.如果不在发出报警.配置:    1.添加监控项(Items).        打开zabbix web管理界面:选择"Configurat ...

  3. 使用Owin中间件搭建OAuth2.0认证授权服务器

    前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...

  4. Canvas识别相似图片

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. hdu1535 SPFA

    2边SPFA 然后求和 #include<stdio.h> #include<string.h> #include<queue> #define INF 10000 ...

  6. Java 关键字 native

    native 关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件中,而是在用其他语言实现的文件中.Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言 ...

  7. 【HDU 2546】饭卡(DP+贪心)

    贪心:最贵的留到最后买.状态转移方程:dp[j]=dp[j+a[i]]|dp[j],dp[i]表示余下i元. 原来就不足5元,那就不能买啦. #include<cstdio> #inclu ...

  8. 【kAri OJ605】陈队的树

    时间限制 1000 ms 内存限制 65536 KB 题目描述 陈队有N棵树,有一天他突然想修剪一下这N棵树,他有M个修剪器,对于每个修剪器给出一个高度h,表示这个修剪器可以把某一棵高度超过h的树修剪 ...

  9. groovy–流程控制

    在本篇文章中,我们将介绍逻辑分支,循环,以及如何从if-else以及try-catch代码块中返回值. if – elseGroovy 支持Java传统的if-else语法: def x = fals ...

  10. Laravel 5 中的配置

    介绍 Laravel 的所有的配置文件都放在了 config 这个目录的下面.每个选项都有介绍. config├── app.php├── auth.php├── cache.php├── compi ...