JMH
文章平均质量分 64
wyaoyao93
小白
展开
-
JMH的Profiler
文章目录1 JMH的Profiler分类2 StackProfiler3 GcProfiler4 ClassLoaderProfiler5 CompilerProfiler1 JMH的Profiler分类JMH提供了一些非常有用的Profiler可以帮助我们更加深入地了解基准测试,甚至还能帮助开发者分析所编写的代码ProfilerProfiler描述CL分析执行Benchmark方法时的类加载情况COMP通过strandard MBean进行Benchmark方法的JIT原创 2021-04-19 10:13:42 · 329 阅读 · 0 评论 -
JMH的一些高级的用法
1 Asymmetric Benchmark一般,基准测试都会被JMH框架根据方法名的字典顺序排序之后串行执行,然而有些时候我们会想要对某个类的读写方法并行执行:比如,我们想要在修改某个原子变量的时候又有其他线程对其进行读取操作@BenchmarkMode(Mode.AverageTime)@Fork(1)@OutputTimeUnit(TimeUnit.MICROSECONDS)// 设置为线程组共享的@State(Scope.Group)@Warmup(iterations = 5)@原创 2021-04-15 18:20:33 · 159 阅读 · 0 评论 -
编写正确的微基准测试
虽然JMH可以帮我们更好地了解我们所编写的代码,但是如果我们所编写的JMH基准测试方法本身就有问题,那么就会很难起到指导的作用,甚至还会可能会产生误导,如何避免编写错误的微基准测试方法呢?现代的Java虚拟机已经发展得越来越智能了,它在类的早期编译阶段、加载阶段以及后期的运行时都可以为我们的代码进行相关的优化,比如Dead Code的擦除、常量的折叠,还有循环的打开,甚至是进程Profiler的优化,等等,因此要掌握如何编写良好的微基准测试方法,首先我们要知道什么样的基准测试代码是有问题的。1 避免D原创 2021-04-15 17:54:52 · 246 阅读 · 0 评论 -
CompilerControl注解
大家都知道JVM会对我们的代码进行相关的优化,现在就来验证一下import org.openjdk.jmh.annotations.*;import org.openjdk.jmh.runner.Runner;import org.openjdk.jmh.runner.RunnerException;import org.openjdk.jmh.runner.options.Options;import org.openjdk.jmh.runner.options.OptionsBuilder;原创 2021-04-15 16:25:05 · 213 阅读 · 0 评论 -
JMH的测试套件(Fixture):Setup以及TearDown
在使用Junit编写单元测试的时候,我们可以使用的套件有@Before、@After、@BeforeClass、@AfterClass等。在JMH中,有没有哪些套件方法可以支持对基准测试方法的初始化以及资源回收呢?答案是有的1 Setup以及TearDownJMH提供了两个注解@Setup和@TearDown用于套件测试,其中@Setup会在每一个基准测试方法执行前被调用,通常用于资源的初始化,@TearDown则会在基准测试方法被执行之后被调用,通常可用于资源的回收清理工作:@BenchmarkMo原创 2021-04-15 16:09:18 · 880 阅读 · 0 评论 -
@Param的妙用
1 引入测试对比ConcurrentHashMap和SynchronizedMap的性能容器的的put方法的性能@BenchmarkMode(Mode.AverageTime)@Fork(1)@OutputTimeUnit(TimeUnit.MICROSECONDS)// 开启5个线程测试@Threads(5)// 设置为线程间共享资源@State(Scope.Benchmark)@Warmup(iterations = 5)@Measurement(iterations = 10)p原创 2021-04-15 15:24:56 · 214 阅读 · 0 评论 -
JMH API 详解
文章目录1 @Benchmark注解标记基准测试方法2 Warmup以及Measurement2.1 设置全局的Warmup和Measurement2.2 基准方法设置自己的Warmup和Measurement2.3 Warmup和Measurement执行相关的输出说明3 四大BenchmarkMode3.1 AverageTime3.2 Throughput(方法吞吐量)3.3 SampleTime(时间采样)3.4 SingleShotTime3.5 多Mode以及All4 OutputTimeUni原创 2021-04-14 16:25:06 · 398 阅读 · 0 评论 -
JMH入门
1 JMH介绍JMH是Java Micro Benchmark Harness的简写,是专门用于代码微基准测试的工具集(toolkit)。JMH是由实现Java虚拟机的团队开发的,因此他们非常清楚开发者所编写的代码在虚拟机中将会如何执行。由于现代JVM已经变得越来越智能,在Java文件的编译阶段、类的加载阶段,以及运行阶段都可能进行了不同程度的优化,因此开发者编写的代码在运行中未必会像自己所预期的那样具有相同的性能体现,JVM的开发者为了让普通开发者能够了解自己所编写的代码运行的情况,JMH便因此而生。原创 2021-04-14 11:21:03 · 196 阅读 · 0 评论