在Java中乘以两个字节数组的最快方法

时间:2014-06-14 15:54:08

标签: java arrays

我有两个字节数组表示无符号的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次迭代,有些东西告诉我这可以更快完成。

0 个答案:

没有答案