Skip to content

Instantly share code, notes, and snippets.

@petarov
Created February 15, 2022 07:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save petarov/e9c8d2953d7ab362acc40e0f7fbb2813 to your computer and use it in GitHub Desktop.
Save petarov/e9c8d2953d7ab362acc40e0f7fbb2813 to your computer and use it in GitHub Desktop.
Java Test
import org.bouncycastle.util.encoders.Hex;
import java.util.HexFormat;
class Scratch {
public static void main(String[] args) throws Exception {
var data = new byte[] { 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12,
0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19,
96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109,
87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42,
127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0,
-1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12,
0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19,
96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109,
87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42,
127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0,
-1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12,
0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19,
96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109,
87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42,
127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0,
-1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12,
0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19,
96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109,
87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42,
127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0,
-1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12,
0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19,
96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109,
87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42,
127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0,
-1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12,
0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19,
96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109,
87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42,
127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0,
-1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12,
0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19,
96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109,
87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42,
127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0,
-1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12,
0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19,
96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109,
87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42,
127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0,
-1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12,
0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19,
96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 0, -1, 109, 87, 0, -1, 0, -1, -42,
-19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 0, -1, 109, 87, 0, -1, 0, -1, -42,
-19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 0, -1, 109, 87, 0, -1, 0, -1, -42,
-19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 0, -1, 109, 87, 0, -1, 0, -1, -42,
-19, 96, 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19 };
// System.out.println("BC: " + Hex.toHexString(data));
// System.out.println("HF: " + HexFormat.of().formatHex(data));
// System.out.println("HF: " + org.apache.commons.codec.binary.Hex.encodeHex(data));
// var data = new byte[] { 23, 42, 127, 31, 12, 0, -1, 109, 87, 0, -1, 0, -1, -42, -19, 96, 23, 42, 127, 31, 12,
// 0 };
final var ITER = 100;
System.out.println("Byte array size: " + data.length);
System.out.println("Iterations: " + ITER);
var n1 = System.nanoTime();
for (int i = 0; i < ITER; i++) {
data[0] ^= i & 127;
Hex.toHexString(data);
}
var e1 = (System.nanoTime() - n1) / 1000.0;
var n2 = System.nanoTime();
var hf = HexFormat.of();
for (int i = 0; i < ITER; i++) {
data[0] ^= i & 127;
HexFormat.of().formatHex(data);
}
var e2 = (System.nanoTime() - n2) / 1000.0;
var n3 = System.nanoTime();
for (int i = 0; i < ITER; i++) {
data[0] ^= i & 127;
org.apache.commons.codec.binary.Hex.encodeHex(data);
}
var e3 = (System.nanoTime() - n3) / 1000.0;
System.out.println("java.util.HexFormat Hex: " + e2 + " ms.");
System.out.println("BouncyCastle Hex: " + e1 + " ms.");
System.out.println("commons Hex: " + e3 + " ms.");
};
}
@petarov
Copy link
Author

petarov commented Feb 15, 2022

Byte array size: 1192
Iterations: 10_000
java.util.HexFormat Hex: 43047.627 ms.
BouncyCastle Hex:        448299.101 ms.
commons Hex:             36637.971 ms.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment