如何使用jbenchx改变我的RSA密钥大小加密INT

问题描述 投票:0回答:1

我尝试我们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,它不会工作,要么。有人人可以告诉我,我的错误

java eclipse junit benchmarking key-pair
1个回答
0
投票

所述@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/

有在你的代码两个缺陷:

  1. 代码不编译,因为称为generateKeyPair()-方法内的createkey()-方法无处定义(限定generateKeyPair(int)-方法具有int参数并因此不同的签名)。
  2. 所述@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.
© www.soinside.com 2019 - 2024. All rights reserved.