我有两个字节数组表示无符号的256位值,我想将它们相乘得到一个新值。在Java中执行此操作的最快方法是什么?还有其他因素需要考虑吗?
例如,这是我目前的乘法函数:
// two input values
// i.e. each 0x00000000000000000000000000000000000000000000000000000000000000ff
byte[] input1Array = new byte[32];
byte[] input2Array = new byte[32];
BigInteger input1 = new BigInteger(1, input1Array);
BigInteger input2 = new BigInteger(1, input2Array);
BigInteger result = input1.multiply(input2);
byte[] bytes = result.toByteArray();
ByteBuffer data = ByteBuffer.allocate(32);
System.arraycopy(bytes, 0, data.array(), 32 - bytes.length, bytes.length);
// expected 0x000000000000000000000000000000000000000000000000000000000000fe01
byte[] resultArray = data.array();
这需要大约1500毫秒在我的电脑上进行10000000次迭代,有些东西告诉我这可以更快完成。