У меня есть этот оператор в моей программе на языке C, и я хочу его оптимизировать. Под оптимизацией я особенно хочу обратиться к побитовым операторам (но любое другое предложение тоже подойдет).
uint64_t h_one = hash[0];
uint64_t h_two = hash[1];
for ( int i=0; i<k; ++i )
{
(uint64_t *) k_hash[i] = ( h_one + i * h_two ) % size; //suggest some optimization for this line.
}
Любое предложение будет большим подспорьем.
Редактировать:
На данный момент size
может быть любым int
, но это не проблема, и мы можем округлить его до следующего простого числа (но это может быть не степень двойки, так как для больших значений степень числа 2 быстро увеличивается, и это приведет к большой трате памяти)
h_two
— это 64-битное целое число (по сути, фрагмент из 64 байт).