36 import org.openjdk.jmh.annotations.Scope;
37 import org.openjdk.jmh.annotations.Setup;
38 import org.openjdk.jmh.annotations.State;
39 import org.openjdk.jmh.annotations.Warmup;
40
41 /**
42 * Tests various digester algorithms. Sets Fork parameters as these tests are
43 * rather allocation intensive. Reduced number of forks and iterations as
44 * benchmarks are stable.
45 */
46 @State(Scope.Thread)
47 @OutputTimeUnit(TimeUnit.MILLISECONDS)
48 @Warmup(iterations = 5)
49 @Measurement(iterations = 10)
50 @Fork(jvmArgsAppend = {"-Xms1024m", "-Xmx1024m", "-Xmn768m", "-XX:+UseParallelGC"}, value = 5)
51 public class MessageDigests {
52
53 @Param({"64", "1024", "16384"})
54 private int length;
55
56 @Param({"md2", "md5", "SHA-1", "SHA-224", "SHA-256", "SHA-384", "SHA-512"})
57 private String digesterName;
58
59 @Param({"DEFAULT", "SUN"})
60 protected String provider;
61
62 private byte[] inputBytes;
63 private MessageDigest digester;
64
65 @Setup
66 public void setup() throws NoSuchAlgorithmException, DigestException, NoSuchProviderException {
67 inputBytes = new byte[length];
68 new Random(1234567890).nextBytes(inputBytes);
69 if ("DEFAULT".equals(provider)) {
70 digester = MessageDigest.getInstance(digesterName);
71 } else {
72 digester = MessageDigest.getInstance(digesterName, provider);
73 }
74 }
75
76 @Benchmark
|
36 import org.openjdk.jmh.annotations.Scope;
37 import org.openjdk.jmh.annotations.Setup;
38 import org.openjdk.jmh.annotations.State;
39 import org.openjdk.jmh.annotations.Warmup;
40
41 /**
42 * Tests various digester algorithms. Sets Fork parameters as these tests are
43 * rather allocation intensive. Reduced number of forks and iterations as
44 * benchmarks are stable.
45 */
46 @State(Scope.Thread)
47 @OutputTimeUnit(TimeUnit.MILLISECONDS)
48 @Warmup(iterations = 5)
49 @Measurement(iterations = 10)
50 @Fork(jvmArgsAppend = {"-Xms1024m", "-Xmx1024m", "-Xmn768m", "-XX:+UseParallelGC"}, value = 5)
51 public class MessageDigests {
52
53 @Param({"64", "1024", "16384"})
54 private int length;
55
56 @Param({"md2", "md5", "SHA-1", "SHA-224", "SHA-256", "SHA-384", "SHA-512", "SHA3-224", "SHA3-256", "SHA3-384", "SHA3-512"})
57 private String digesterName;
58
59 @Param({"DEFAULT", "SUN"})
60 protected String provider;
61
62 private byte[] inputBytes;
63 private MessageDigest digester;
64
65 @Setup
66 public void setup() throws NoSuchAlgorithmException, DigestException, NoSuchProviderException {
67 inputBytes = new byte[length];
68 new Random(1234567890).nextBytes(inputBytes);
69 if ("DEFAULT".equals(provider)) {
70 digester = MessageDigest.getInstance(digesterName);
71 } else {
72 digester = MessageDigest.getInstance(digesterName, provider);
73 }
74 }
75
76 @Benchmark
|