У меня есть указатель ptr и условие cond. Мне нужен самый быстрый способ reset ptr, если cond есть true или сохранить ptr без изменений, если cond - false. Текущая реализация тривиально:
void reset_if_true(void*& ptr, bool cond)
{
if (cond)
ptr = nullptr;
}
Я знаю, что вышеприведенная производительность кода хороша, и я не могу ожидать, что ее оптимизация повысится. Однако этот код называется несколькими миллионами раз в секунду, и каждая небольшая наносекунда сохраняется.
Я думал о чем-то, что избавилось от ветки, например:
void* p[] = { ptr, nullptr };
ptr = p[cond];
но я не уверен, что это лучший способ продолжить.