JMH
JMH是用于构建,运行和分析用Java和其他语言编写的面向JVM的nano / micro / milli / macro基准测
试的Java代码库。
前言
为什么会突然想起来写这个呢?之前确实用过这个,不过基本上都是只是知道而已,没有真正的使用这个工具去对比什么内容,最近看占老板突然更新一篇博客,用到了这个,就趁机学习一下,哈哈! 跟着大牛果然提升快!
一个例子
比较三种时间工具类的性能
import org.joda.time.DateTime;
import org.openjdk.jmh.annotations.*;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
/**
* Created by gongyan on 2018/6/11.
*/
@OutputTimeUnit(TimeUnit.NANOSECONDS)
@BenchmarkMode(Mode.AverageTime)
@Fork(value = 2)
public class DateTimeBenchmarkTest {
@Benchmark
@Threads(10)
public void runCalender() {
Calendar calendar = Calendar.getInstance();
}
@Benchmark
@Threads(10)
public void runJoda() {
DateTime dateTime = DateTime.now();
}
@Benchmark
@Threads(10)
public void runSystem() {
long result = System.currentTimeMillis();
}
}
效果评估
可以看到,Joda的效果已经快赶上了System的,而Calender的耗时居然是Joda的7倍!
官网传送门
Idea插件
在Idea里面运行 尽量还是使用插件直接运行,基于注解进行配置