Tôi cần tối ưu hóa một số mã mà tôi nhân một vectơ ints (32 bit) bởi một modul p vô hướng (trong đó p là số nguyên tố (2^32) -5) và sau đó trừ vector đó từ một vector khác p.Phép nhân và phép trừ nhanh modulo một số nguyên tố
Mã này trông như thế này:
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]));
}
}
Tôi đang sử dụng chờ đợi vì Java không hỗ trợ số nguyên unsigned nhưng cả hai vectơ là mod p, do đó bạn có thể mong đợi mỗi số là 0 < = x < (2^32) -5
Bất kỳ ý tưởng nào để tối ưu hóa điều này? Các hoạt động mod mod là những gì chiếm hầu hết thời gian thực hiện vì vậy một cách để tối ưu hóa điều này có thể bằng cách nào đó không làm modP sau khi nhân và chỉ làm điều đó sau khi trừ. Bất kỳ ý tưởng về cách làm điều đó?
Cảm ơn. Tôi đã thử chỉ cần loại bỏ các mod mod sau khi nhân nhưng bây giờ hồi quy của tôi-kiểm tra thất bại. Tôi đoán tôi nhận được một số hình thức lỗi tràn. Tôi sẽ xem xét kỹ hơn. – Yrlec