Groovy在不同JDK版本下的性能差异
Groovy作为一种动态语言,性能和JAVA比肯定是差不少,根据网友的测试,由于测试环境,场景和编译参数的不同,大概有差2到7倍的差距
那么同样的Groovy,在不同的JDK版本下,会有着怎样的差异呢?好奇试了一下
测试代码写得非常简单,如下,为了测试一些动态语言中常用的特性,特别用上了闭包和动态特性,这样才有意义么
class GroovyWithJdk{
static void run(){
1000.times { "fib"(20) } //为了动态特性
}
static def fib(n){
if(n<2)
return 1
def c = {x,y->fib(x)+fib(y)} //纯粹就是为了测试闭包
c(n-1,n-2)
}
}
println System.getProperty("java.version")
long start = System.currentTimeMillis()
GroovyWithJdk.run()
println "用时:${System.currentTimeMillis()-start}毫秒"
结果,让人很欣慰呀,果然越新的的JDK性能越好(当然,也是因为新JDK增加了对于动态语言的支持),很合我这样追新族的心意。
下面是结果:
/*
1.6.0_45
用时:6652毫秒 1.7.0_79
用时:5590毫秒 1.8.0_20
用时:4435毫秒 32位JDK的结果,因为我是64位机和系统,运行32位JDK时要模拟成32位的,所以效率差得有点大
1.8.0_51
用时:12858毫秒 */
可以看到,JDK8相比JDK6,有着差不多30%的提升
至于如何快速测试?由于GroovyConsole本来就是一个启动脚本,它是依靠JAVA_HOME来指定使用哪个JDK版本的,所以只要在调用前先指定一下JAVA_HOME就可以了。可以三个实例一起运行
set JAVA_HOME=D:\JDK7

Groovy在不同JDK版本下的性能差异的更多相关文章
- Asp.Net运行于32/64模式下的性能差异
项目使用的是Oracle数据库,.Net使用Odac对数据库进行访问.在官方下载Odac时会让你选择是下载32位的还是64位的.这会直接影响到网站的运行模式.目前我们使用的是32位的,那么布署时,需要 ...
- 关于JDK高版本下RMI、LDAP+JNDI bypass的一点笔记
1.关于RMI 只启用RMI服务时,这时候RMI客户端能够去打服务端,有两种情况,第一种就是利用服务端本地的gadget,具体要看服务端pom.xml文件 比如yso中yso工具中已经集合了很多gad ...
- Win7 下以管理员身份运行批处理文件,切换JDK版本
Win7下 切换JDK的批处理命令 1. 批处理文件(必须以管理员身份执行)内容如下 @echo off rem --- Base Config 配置JDK的安装目录 --- :init set JA ...
- Mac OS X 下多个JDK版本的切换小技巧
如果在系统中安装了多个Java JDK 版本,可能会根据项目或编译环境的不同来回切换,下面有两种非常方便的方法供大家选择. 我的机器上有 Java 7 和 Java 8,大家根据自己的 JDK 版本自 ...
- 解决Linux下jdk版本与安装版本不一致
解决Linux下jdk版本与安装版本不一致 在Linux下安装jdk后,利用java -version查看版本使,发现不是自己所安装的jdk版本; 解决方案: which java ——查看默认的jd ...
- JMeter下Groovy和BeanShell语言在不同组件中性能差异实践探究
一般而言JMeter下性能最好的是jar包这类java原生请求,对于JMeter并没有原生支持的请求,一般都会将其直接编译为jar包,然后再JMeter中调用,这样性能最好. 但是有些需求并不适合用j ...
- Windows下多个JDK版本之间的切换
一.JDK版本切换批处理脚本 我们平时在window上做开发的时候,可能需要同时开发两个甚至多个项目,有时不同的项目对JDK的版本要求有区别,这时候我们可能会在一台电脑上安装多个版本的JDK,如下 ...
- Android Studio 使用笔记:[转] Mac下修改Android Studio 所用的JDK版本
原文链接:http://www.jianshu.com/p/d8d1d72d0248# 最近项目从Eclipse+Ant构建模式转移到了Android Studio+Gradle构建模式,自然的JDK ...
- MAC OS下JDK版本切换指南
刚上手的用MAC开发的小伙伴们会发现,MAC自带JDK版本为1.6,通常会安装在 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/目录下,但是更多 ...
随机推荐
- VBA基础——循环语句
VBA基础之循环语句 Sub s1() Dim rg As Range For Each rg In Range("a1:b7,d5:e9") If rg = "&quo ...
- Android DatePicker和TimePicker
监测日期改变的监听器: OnDateChangedListener和OnTimeChangedListener() 当用户改变Datepicker里的年.月.日时,将触发 ...
- ■[iOS] Interface type cannot be statically allocated の原因と対応
iOSでの開発をしていると.表題のエラーが起こる場合があります. 原因 変数の型が静的割り当てになっていることが原因. 対応 変数の型をポインタ型にすると.エラーがなくなります.(変数の前に*をつける ...
- [LeetCode]题解(python):152-Maximum Product Subarray
题目来源: https://leetcode.com/problems/maximum-product-subarray/ 题意分析: 给定一个数组,这个数组所有子数组都有一个乘积,那么返回最大的乘积 ...
- Oracle EBS-SQL (BOM-5):检查有BOM但物料状态为NEW的物料.sql
select DISTINCT msi.segment1 成品编码 ,msi.description 成品描述 ,msi.item_type 物料类型 ,msi.invent ...
- C#版-百度网盘API的实现(一)
在这篇文章中,楼主将会给大家介绍一下,通过C# winform程序在后台模拟用户登陆百度网盘的基本思路 首先了解下模拟登陆的流程,如下: 一,访问http://www.baidu.com网站,获取BA ...
- 老去的JEE,焕发生命
JEE的社区 JEE从出生到现在,十多年了.在软件领域,好听的说法,基本上就是Legacy系统了,不好听,那就是恐龙.曾经疯魔万千开发者的Springframework, Jboss 社区, Apac ...
- oracle字符集
oracle server端字符集
- iOS 处理方法中的可变參数
## iOS 处理方法中的可变參数 近期写了一个自己定义的对话框的demo,想模仿系统的UIAlertView的实现方式.对处理可变參数的时候,遇到了小问题,于是谷歌了一下.写下了处理问题的方法.记录 ...
- 黑马程序员_<<String类>>
--------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1. String类 1.概述 String ...