我必须以 X 次方(X 介于 1 到 300 之间的任意位置)以 50 为底提高许多数字。这些数字存储为 bignums。
我的问题是:因为我会将两个 bignums 逐位(以 50 为底)相乘很多次,所以缓存这个乘法会更快吗?
a[]
所以,每次我乘以b[]
我将不得不做a[i]*b[j]
很多次 where a[i]
and b[j]
are base 50 numbers。
我在想而不是a[i]*b[j]
每次都实际做,事先创建一个矩阵会不会更快:prod[50][50]
, where prod[i][j] = i*j
. 然后我会有类似的东西prod[a[i]][b[j]]
。
从内存中读取是否比实际执行乘法更快?
如果我的问题不清楚,快速示例:
代替:
for(int i=1; i<=100; ++i){
sum += 50*30;
sum += 37*20;
}
这是不是更快:
for(int i=1; i<=100; ++i){
sum += prod[50][30];
sum += prod[37][20];
}
?