我尝试我们jbenchx上做不同的加密方式的基准测试,我不能让@ForEachInt命令才能正常工作
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 {
public KeyPair generateKeyPair(@ForEachInt({112,196,256}) int size) throws GeneralSecurityException {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA", "BC");
keyPairGen.initialize(size);
return keyPairGen.generateKeyPair();
}
@Bench
public Object createkey() throws GeneralSecurityException {
Security.addProvider(new BouncyCastleProvider());
KeyPair RSA = generateKeyPair();
return RSA;
}
}
}
我曾尝试只运行一个单独的方法与keyPairGenerator.initialize,它不会工作,要么。有人人可以告诉我,我的错误
所述@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
-annotatioan,即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.