У меня есть указатель 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];
но я не уверен, что это лучший способ продолжить.