Використання цього покажчика викликає дивну деоптимізацію в гарячому циклі
Нещодавно я натрапив на дивну деоптимізацію (а точніше, пропустив можливість оптимізації). Розглянемо цю функцію для ефективного розпакування масивів 3-бітових цілих чисел до 8-бітних цілих чисел. Він розпаковує 16 входів у кожній ітерації циклу: void unpack3bit(uint8_t* target, char* source, int size) { while(size > 0){ uint64_t t = *reinterpret_cast<uint64_t*>(source); target[0] = …