实战SPECjvm2008
SPECjvm2008是一个观测JRE运行性能的基准测试套件。它的测试用例涵盖了大部分java基础应用场景,是架构选型和JVM性能评测不可多得的利器。
SPECjvm2008 官方网站 : http://www.spec.org/
1、安装jdk
1.1 切换到root账号(能够有修改/etc/profile的权限的用户)
1.2 下载和安装jdk
把jdk安装在/home/user/runtime/中,把jdk-6u27-linux-x64.bin拷贝到/home/user/runtime/当中。
[root@localhost Desktop]# ./jdk-6u27-linux-x64.bin 回车,然后是同意协议,直接空格过去,然后点击enter,安装完毕。
1.3 修改/etc/profile [root@localhost Desktop]# vi /etc/profile 增加以下几行 export使变量生效
export JAVA_HOME=/home/fangming/runtime/jdk1.6.0_27
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
1.4 修改保存后,重新加载一次
[root@localhost Desktop]#source /etc/profile(当然可以reboot)
1.5 验证一下,环境变量是否设置正确
[root@localhost Desktop]# java -version
java version "1.6.0_27"
Java(TM) SE Runtime Environment (build 1.6.0_27-b07)
Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)
1.6 至此jdk已经安装成功
2、SPECjvm2008安装
2.1 下载SPECjvm2008
下载完成后,是一个“SPECjvm2008_1_01_setup.jar”的安装包,可以前往SPECjvm2008官网进行下载。
2.2 安装SPECjvm2008
linux环境下添加参数-i console,使用命令行的方式进行安装,然后一步一步按照提示安装即可。命令如下:
$ java -jar SPECjvm2008_1_01_setup.jar -i console
2.3 验证SPECjvm2008是否安装成功
在安装目录下找到脚本run-specjvm.sh,./run-specjvm.sh startup.helloworld -ikv
startup.helloworld 用于测试helloworld程序的启动时间,选择这个测试用例是考虑到运行速度比较快。 -ikv的意思是跳过签名检查,这个过程比较慢,这里仅仅是测试SPECjvm。
[user@localhost SPECjvm2008]$ ./run-specjvm.sh startup.helloworld -ikv
SPECjvm2008 Base
Properties file: none
Benchmarks: startup.helloworld
WARNING: Run will not be compliant.
Not a compliant sequence of benchmarks for publication.
Property specjvm.run.checksum.validation must be true for publication.
--- --- --- --- --- --- --- --- ---
Benchmark: check
Run mode: static run
Test type: functional
Threads: 1
Iterations: 1
Run length: 1 operation
Iteration 1 (1 operation) begins: Tue Apr 01 19:10:43 PDT 2014
Iteration 1 (1 operation) ends: Tue Apr 01 19:10:44 PDT 2014
Iteration 1 (1 operation) result: PASSED
Valid run!
--- --- --- --- --- --- --- --- ---
Benchmark: startup.helloworld
Run mode: static run
Test type: single
Threads: 1
Iterations: 1
Run length: 1 operation
Iteration 1 (1 operation) begins: Tue Apr 01 19:10:44 PDT 2014
Iteration 1 (1 operation) ends: Tue Apr 01 19:10:44 PDT 2014
Iteration 1 (1 operation) result: 194.17 ops/m
Valid run!
Score on startup.helloworld: 194.17 ops/m
Results are stored in:
/home/fangming/runtime/SPECjvm2008/results/SPECjvm2008.001/SPECjvm2008.001.raw
Generating reports in:
/home/fangming/runtime/SPECjvm2008/results/SPECjvm2008.001
Noncompliant composite result: 194.17 ops/m
2.3 SPECjvm2008已经成功安装。
3、SPECjvm2008测试用例列表
SPECjvm2008测试用例列表:(单位 ops/m 每分钟操作数)
startup.helloworld | 测试helloworld程序从运行开始到结束所需的时间 |
startup.compiler.compiler | 普通java编译所需要的时间 |
startup.compiler.sunflow | 编译sunflow图像渲染引擎所需要的时间 |
startup.compress | 测试压缩程序,单次压缩所需的时间 |
startup.crypto.aes |
测试AES/DES加密算法,单次加解密所需的时间 输入数据长度为 100 bytes , 713KB |
startup.crypto.rsa |
测试RSA加密算法,单次加解密需要的时间 输入数据长度为 100 bytes, 16KB |
startup.crypto.signverify |
测试单次使用MD5withRSA, SHA1withRSA, SHA1withDSA, SHA256withRSA来签名,识别所需要的时间。 输入数据长度为 1KB, 65KB, 1MB |
startup.mpegaudio | 单次mpeg音频解码所需的时间 |
startup.scimark.fft | 单次快速傅立叶变换所需的时间 |
startup.scimark.lu | 单次LU分解所需的时间 |
startup.scimark.monte_carlo | 单次运行蒙特卡罗算法所需的时间 |
startup.scimark.sor | 单次运行jacobi逐次超松弛迭代法所需的时间 |
startup.scimark.sparse | 单次稀疏矩阵乘积所需的时间 |
startup.serial | 单次通过socket传输java序列化对象到对端反序列化完成所需的时间(基于jboss serialization benchmark) |
startup.sunflow | 单次图片渲染处理所需的时间 |
startup.xml.transform | 单次xml转换所需的时间,转换包括dom,sax,stream方式 |
startup.xml.validation | 单次xml schema校验所需的时间 |
compiler.compiler | 在规定时间内,多线程迭代测试普通java编译,得出 ops/m |
compiler.sunflow | 在规定时间内,多线程迭代测试sunflow图像渲染,得出 ops/m |
compress | 在规定时间内,多线程迭代测试压缩,得出 ops/m |
crypto.aes | 在规定时间内,多线程迭代测试AES/DES加解密算法,得出 ops/m |
crypto.rsa | 在规定时间内,多线程迭代测试RSA加解密算法,得出 ops/m |
crypto.signverify | 在规定时间内,多线程迭代测试使用MD5withRSA, SHA1withRSA, SHA1withDSA, SHA256withRSA来签名,识别,得出 ops/m |
derby | 在规定时间内,迭代测试数据库相关逻辑,包括数据库锁,BigDecimal计算等,最后得出 ops/m |
mpegaudio | 在规定时间内,多线程迭代mpeg音频解码,得出 ops/m |
scimark.fft.large | 在规定时间内,多线程迭代测试快速傅立叶变换,使用32M大数据集,最后得出 ops/m |
scimark.lu.large | 在规定时间内,多线程迭代测试LU分解,使用32M大数据集,最后得出 ops/m |
scimark.sor.large | 在规定时间内,多线程迭代测试jacobi逐次超松弛迭代法,使用32M大数据集,最后得出 ops/m |
scimark.sparse.large | 在规定时间内,多线程迭代测试稀疏矩阵乘积,使用32M大数据集,最后得出 ops/m |
scimark.fft.small | 在规定时间内,多线程迭代测试快速傅立叶变换,使用512K小数据集,最后得出 ops/m |
scimark.lu.small | 在规定时间内,多线程迭代测试LU分解,使用512KB小数据集,最后得出 ops/m |
scimark.sor.small | 在规定时间内,多线程迭代测试jacobi逐次超松弛迭代法,使用512KB小数据集,最后得出 ops/m |
scimark.sparse.small | 在规定时间内,多线程迭代测试稀疏矩阵乘积,使用512KB小数据集,最后得出 ops/m |
scimark.monte_carlo | 在规定时间内,多线程迭代测试蒙特卡罗算法,得出 ops/m |
serial | 在规定时间内,多线程迭代测试通过socket传输java序列化对象到对端反序列化(基于jboss serialization benchmark),得出 ops/m |
sunflow | 在规定时间内,利用sunflow多线程迭代测试图片渲染,得出 ops/m |
xml.transform | 在规定时间内,多线程迭代测试xml转换,得出 ops/m |
xml.validation | 在规定时间内,多线程迭代测试xml schema验证,得出 ops/m |
参考文章:
SPECjvm2008 FAQ http://www.spec.org/jvm2008/docs/FAQ.html
将SPECjvm2008测试样例引入程序 http://www.dullong.com/introduce-spec-into-my-code.html
描述常用的benchmark和性能评估相关内容 http://www.docin.com/p-366727065.html
实战SPECjvm2008相关推荐
- IDEA的Docker插件实战(Dockerfile篇)
IDEA的Docker插件实战(Dockerfile篇) IntelliJ IDEA的Docker插件能帮助我们将当前工程制作成Docker镜像.运行在指定的远程机器上,是学习和开发阶段的好帮手,本文 ...
- 数据结构(04)— 线性顺序表实战
1. 设计思路 本实战的实质是完成对学生成绩信息的建立.查找.插入.修改.删除等功能,可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运 ...
- 【置顶】利用 NLP 技术做简单数据可视化分析教程(实战)
置顶 本人决定将过去一段时间在公司以及日常生活中关于自然语言处理的相关技术积累,将在gitbook做一个简单分享,内容应该会很丰富,希望对你有所帮助,欢迎大家支持. 内容介绍如下 你是否曾经在租房时因 ...
- 2 用python进行OpenCV实战之图像基本知识
前言 在这一节,我们将学习图像的基本构成单元--像素,我们将详细的探讨什么是像素?像素是如何使用来构成图像的?然后学习如何通过OpenCV来获取和操纵像素. 1 什么是像素 所有的图像都包含一组像素, ...
- PyTorch 高级实战教程:基于 BI-LSTM CRF 实现命名实体识别和中文分词
20210607 https://blog.csdn.net/u011828281/article/details/81171066 前言:译者实测 PyTorch 代码非常简洁易懂,只需要将中文分词 ...
- 实战清除电脑上恶意弹出广告窗口
实战清除电脑上恶意弹出广告窗口 当你碰到电脑桌面右下角时不时弹出广告,如游戏推广.商品广告等,怎么删也删不掉,这是因为用户不小心安装有捆绑广告推广的软件,系统被静默安装了恶意木马广告,这不仅仅是影响用 ...
- deeplearning模型量化实战
deeplearning模型量化实战 MegEngine 提供从训练到部署完整的量化支持,包括量化感知训练以及训练后量化,凭借"训练推理一体"的特性,MegEngine更能保证量化 ...
- DeepLabV3+语义分割实战
DeepLabV3+语义分割实战 语义分割是计算机视觉的一项重要任务,本文使用Jittor框架实现了DeepLabV3+语义分割模型. DeepLabV3+论文:https://arxiv.org/p ...
- 图像合成与风格转换实战
图像合成与风格转换实战 神经式转移 Neural Style Transfer 如果使用社交分享应用程序或者碰巧是个业余摄影师,对过滤器很熟悉.滤镜可以改变照片的颜色样式,使背景更清晰或人的脸更白.然 ...
最新文章
- node.js cannot find module
- 一些好用的 资料网站
- Ngrx Store实现源代码的MemoizedSelector学习笔记
- java quartz 跳过_Java Quartz计划作业-禁止同时执行作业
- vue伸缩效果_Vue2(三)实现子菜单展开收缩,带动画效果实现方法
- POJ 1328 Radar Installation【贪心】
- 一加9R将推12+256GB新版本:骁龙870+120Hz高刷屏
- 用MySQLdb操作数据库流程示例:
- Systemd 入门教程:命令篇、实战篇
- 贝索斯:为什么我们要选择更难的事情去做? |【经纬低调分享】
- 轻松搞定技术面系列 1——基础篇
- 指标公式c语言源码下载,通达信最全指标公式源码,给大家分享实用的技术指标...
- Oracle数据库SQL技术——习题1
- 笔记(五)Home Assistant Lovelace UI基本用法
- 深入理解5G SSB协议
- JAVA设计模式征服之路-00-设计模式简介
- 懒汉延迟加载设计模式反射注解
- 怎么把.txt转换成html,怎么把txt转换成HTML
- 将python代码做成exe文件
- Android-S SystemServer
热门文章
- 机器学习岗位面试问题汇总 之 深度学习
- Android地图显示百万数量的图标Demo
- 1000w的数据表,18s执行的SQL优化到0.22s?
- python文件式和交互式道路标志_其它课程中的python---4、Matplotlib最最最最简单使用...
- 读书笔记《计算广告》
- 安装客户端报错:“错误:-1628 基于脚本的安装失败。”
- Centos Broadcom驱动
- Flutter WidgetBuilder Builder
- spring基于注解的配置
- popcap资源管理