我需要执行由16位模数找到师unsigned long long
数的余的很多操作:无符号长长的MOD操作
unsigned long long largeNumber;
long residues[100];
unsigned long modules[100];
intiModules(modules); //set different 16-bit values
for(int i = 0; i < 100; i++){
residues[i] = largeNumber % modules[i];
}
我如何可以加速这个循环?
迭代计数不是很大(32-128),但是这个循环非常频繁地执行,所以它的速度非常关键。
我不认为你可以在这里做很多。也许用汇编语言编写它可能会有所帮助。但无论如何,100并不是“很多”。 –
一种选择是使用pthreads并行执行多个模数运算。 –
如果您的模块值范围是连续的,那么您可以只有一个变量来存储它,然后在循环中减少该变量。例如,如果你的值在(高,低)范围内,那么'for(i = low,{i <= high,i ++);残余物[I-低] = largeNumber%I; }' – brokenfoot