我需要執行由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