java – 如何用jmh编写getbytes的小基准?
发布时间:2020-12-15 04:26:18 所属栏目:Java 来源:网络整理
导读:我是JMH和基准测试的新手.我已经编写了一个public byte [] getBytes(String charsetName)方法的小测试.然而,maven无法建立.这是我的代码: package org.openjdk.jmh.samples;@BenchmarkMode(Mode.AverageTime)@OutputTimeUnit(TimeUnit.NANOSECONDS)@State(S
我是JMH和基准测试的新手.我已经编写了一个public byte [] getBytes(String charsetName)方法的小测试.然而,maven无法建立.这是我的代码:
package org.openjdk.jmh.samples; @BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.NANOSECONDS) @State(Scope.Thread) public class Test { @GenerateMicroBenchmark public byte [] testgetbyte (String Str) { byte[] bytes = Str.getBytes("ISO-8859-1"); return bytes; } public static void main(String[] args) throws RunnerException { Options opt = new OptionsBuilder() .include(Test.class.getSimpleName()) .warmupIterations(5) .measurementIterations(5) .forks(1) .build(); new Runner(opt).run(); } } 当我运行:mvn clean install.我收到Build failure错误消息. 解决方法
@GenerateMicroBenchmark似乎表明您使用的是旧版本的JMH,请更新.使用JMH 1.7,此示例:
@BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.NANOSECONDS) @State(Scope.Thread) public class Test { @Benchmark public byte[] test(String str) throws UnsupportedEncodingException { return str.getBytes("ISO-8859-1"); } } …说: [ERROR] /home/shade/temp/stest/src/main/java/org/openjdk/Test.java: [19,19] Method parameters should be @State classes. 这正好说明了String str是不可接受的@Benchmark参数.想一想:JMH应该用什么字符串调用这个方法?谁会产生它?它包含什么?这些答案应由用户通过@State类提供,如JMHSample_03_States和JMHSample_04_DefaultState中所述. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |