Команда @ForEachInt
просто выполняет тест для каждого значения int
, например, код:
import org.jbenchx.annotations.*;
public class Main {
@Bench
public int[] doSomething(@ForEachInt({ 20, 10, 30, 10 }) int size) {
return new int[size];
}
}
дает следующий вывод:
Initializing Benchmarking Framework...
Running on Windows 7 6.1
Max heap = 3784310784 System Benchmark = 0,83ns
Performing 4 benchmarking tasks..
[0] Main.doSomething(20)****!********** 16,3ns
[1] Main.doSomething(10)********** 16,6ns
[2] Main.doSomething(30)****!************ 17,1ns
[3] Main.doSomething(10).*.***.*** 16,5ns
Success.
как единое целоеМожно видеть, что @ForEachInt
-статум имеет четыре int
-значения и, соответственно, выполняется четыре теста.Аналогичный пример показан на http://iquadrat.github.io/jbenchx/.
В вашем коде есть два недостатка:
- Код не компилируется, поскольку метод
generateKeyPair()
вызывается внутри createkey()
-метод нигде не определен (определенный generateKeyPair(int)
-метод имеет int
-параметр и, следовательно, другую сигнатуру). - Команду
@ForEachInt
необходимо использовать в метке, которая помеченас аннотацией @Bench
, то есть createKey()
.
Измените код следующим образом:
import java.security.GeneralSecurityException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Security;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.jbenchx.annotations.Bench;
import org.jbenchx.annotations.ForEachInt;
public class keyGen {
private KeyPair generateKeyPair(int size) throws GeneralSecurityException {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA", "BC");
keyPairGen.initialize(size);
return keyPairGen.generateKeyPair();
}
@Bench
public Object createkey(@ForEachInt({ 112, 196, 256 }) int size) throws GeneralSecurityException {
Security.addProvider(new BouncyCastleProvider());
KeyPair RSA = generateKeyPair(size);
return RSA;
}
}
Тогда вывод будет:
Initializing Benchmarking Framework...
Running on Windows 7 6.1
Max heap = 3784310784 System Benchmark = 0,84ns
Performing 3 benchmarking tasks..
[0] keyGen.createkey(112)!!!!!!!!!!.!.!!!!!!!!!!!!.!!.!!!..!!!*!!..*..*...* 952us
[1] keyGen.createkey(196)!!!!!..*....*...* 1.94ms
[2] keyGen.createkey(256)!!!!!!!!*.*!!*.*.*!.*.*!*.**.****. 2.88ms
Success.