как написать небольшой бенчмарк getbytes с jmh?

Я новичок в JMH и бенчмаркинге. Я написал небольшой тест общедоступного метода 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. Я получаю сообщение об ошибке сборки.


person Bionix1441    schedule 23.03.2015    source источник
comment
Какую ошибку maven вы получаете?   -  person Saif Asif    schedule 23.03.2015


Ответы (1)


@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. Подумайте об этом: с чем String JMH должен вызывать этот метод? Кто будет его генерировать? Что он будет содержать? Эти ответы должны быть предоставлены пользователем через @State классы, как описано в JMHSample_03_States и JMHSample_04_DefaultState.

person Aleksey Shipilev    schedule 24.03.2015
comment
Если я хочу сгенерировать эту строку с помощью метода, какая аннотация мне понадобится? - person Bionix1441; 24.03.2015
comment
Пожалуйста, посмотрите на связанные образцы. - person Aleksey Shipilev; 24.03.2015