【发布时间】:2011-12-16 09:50:57
【问题描述】:
我需要优化一些代码,将整数向量(32 位)乘以模 p 标量(其中 p 是质数 (2^32)-5),然后从另一个模 p 向量中减去该向量.
代码如下:
public static void multiplyAndSubtract(long fragmentCoefficient, long[] equationToSubtractFrom, long[] equationToSubtract) {
for (int i = 0; i < equationToSubtractFrom.length; i++) {
equationToSubtractFrom[i] = modP(equationToSubtractFrom[i] - multiplyModP(fragmentCoefficient, equationToSubtract[i]));
}
}
我使用 long 是因为 Java 不支持无符号整数,但两个向量都是 mod p,因此您可以期望每个数字都是 0
有什么想法可以优化这个吗? mod p 操作占用了大部分执行时间,因此优化此操作的一种方法可能是在乘法后不执行 modP,而仅在减法后执行。关于如何做到这一点的任何想法?
【问题讨论】:
标签: java performance optimization primes modulo