Очень распространенный шаблон в программировании - это ограничение максимального значения после некоторого обновления. Я хотел бы знать, есть ли разница между двумя этими двумя частями кода, и если вам нужно быть предпочтительным:
value += increment;
value = std::min(value, valueMax);
против
value += increment;
if (value > valueMax)
value = valueMax;
Мое мышление заключается в том, что это сводится к тому, что у процессоров есть инструкции для принятия двух значений и получения минимальной суммы. Если это так, вызов std:: min должен привести к этой инструкции и избежать ненужной ветки. Если нет, вторая версия избегает ненужного присваивания, когда значение <= значениеMax.
Я не очень хорошо разбираюсь в подобных вещах, но я уверен, что там есть хакеры из старой школы, которые это узнают. Им я спрашиваю: что лучше?