Java和C#运行速度对比:Java比C#快约3倍
测试条件:
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倍的更多相关文章
- Java和Python运行速度对比
Java和Python运行速度对比:同一个函数运行一百万次,Java耗时0.577秒,Python耗时78秒--135倍的差距. 版本:Java 8,Python 2.7.10 Java测试代码: i ...
- 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制
内容 1.高级语言的运行机制 2.Java 语言的运行机制 1.高级语言的运行机制 高级语言主要分为编译型语言和解释型语言两类. 编译型语言是指使用专门的编译器.针对特定平台(操作系统)将高级语言源代 ...
- 2. Java程序的运行机制
一.完成一个Java程序的流程:编辑Java源代码→编译Java程序→运行Java程序 1. 在记事本中编写Java程序,然后保存为.java类型文件(Java源文件) 2. 使用javac命令将源文 ...
- [零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置
转自:http://redking.blog.51cto.com/27212/114976 重点要会以下两个方面: 1. 抽象类与接口 2. API==>类集 这是两个最重要部分,这两个部分理解 ...
- 2020重新出发,JAVA语言,什么是JAVA?
@ 目录 什么是 java? JAVA三大体系 Java SE Java EE JavaME java的主要特性和优势 1. 面向对象 2. 平台无关性 3. 可移植性 4. 简单性 5. 解释执行 ...
- JVM学习(1)——通过实例总结Java虚拟机的运行机制
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及到的知识点总结如下: JVM的历史 JVM的运行流程简介 JVM的组成(基于 Java 7) JVM调优参数:-Xmx和-Xms ...
- Java虚拟机及运行时数据区
1.Java虚拟机的定义 Java虚拟机(Java Virtual Machine),简称JVM.当我们说起Java虚拟机时,可能指的是如下三种不同的东西: 抽象的虚拟机规范 规范的具体实现 一个运行 ...
- 如何利用 JConsole观察分析Java程序的运行,进行排错调优
原文链接:http://jiajun.iteye.com/blog/810150 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...
- 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序
如何用javac 和java 编译运行整个Java工程 (转载) http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...
随机推荐
- AngularJS开发指南6:AngularJS表单详解
表单控件(input, select, textarea )是用来获取用户输入的.表单则是一组有联系的表单控件的集合. 用户能通过表单和表单控件提供验证的服务,知道自己的输入是否合法.这样能让用户交互 ...
- easyui_动态添加隐藏toolbar按钮
目标:动态添加隐藏toolbar,比如根据权限动态显示新增.修改.删除按钮等 思路:先初始化toolbar的所有按钮,加载datagrid其它信息,再根据权限显示隐藏toolbar按钮 步骤: 1.加 ...
- Pro Git 读书笔记
一. 起步 1. 集中式版本控制缺点:中央服务器的单点故障. 分布式版本控制优点:客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来. 这么一来,任何一处协同工作用的服务器发生故障,事后 ...
- 【CodeForces 613A】Peter and Snow Blower
题 题意 给出原点(不是(0,0)那个原点)的坐标和一个多边形的顶点坐标,求多边形绕原点转一圈扫过的面积(每个顶点到原点距离保持不变). 分析 多边形到原点的最小距离和最大距离构成的两个圆之间的圆环就 ...
- BZOJ-1003 物流运输trans SPFA+DP
傻逼错误耗我1h,没给全范围坑我1A.... 1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec Memory Limit: 162 MB Submit: 529 ...
- 【poj1182】 食物链
http://poj.org/problem?id=1182 (题目链接) 题意 中文题 Solution 带权并查集. 神犇博客,秒懂 fa记录父亲,r记录与父亲的关系.%3运用的很巧妙. 代码 / ...
- Linux Kernel sys_call_table、Kernel Symbols Export Table Generation Principle、Difference Between System Calls Entrance In 32bit、64bit Linux
目录 . sys_call_table:系统调用表 . 内核符号导出表:Kernel-Symbol-Table . Linux 32bit.64bit环境下系统调用入口的异同 . Linux 32bi ...
- 使用 Python 抓取欧洲足球联赛数据
Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤 数据的采集和获取 数据的清洗,抽取,变形和装载 数据的分析,探索和预测 ...
- jdbc链接mysql转
完整java开发中JDBC连接数据库代码和步骤 JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的 ...
- SCI完全攻略:从构思到发表