I have a pointer, ptr, and a condition, cond. I need the fastest possible way to reset ptr if cond is true, or keep ptr unchanged if cond is false. The current implementation is, trivially:
void reset_if_true(void*& ptr, bool cond)
{
if (cond)
ptr = nullptr;
}
I'm aware that the above code performance is good, and I cannot expect a major performance boost optimizing it. However, this code is called several millions of times per second and every little nanosecond saved is relevant.
I was thinking about something that get rid of the branch, e.g.:
void* p[] = { ptr, nullptr };
ptr = p[cond];
but I'm not sure it's the best way to proceed.
Aucun commentaire:
Enregistrer un commentaire