Это сложный вопрос, и он сильно зависит от вашего оборудования, ОС и компилятора.Но ради теории вы должны рассмотреть две вещи: ветвление и доступ к памяти.Поскольку ветвление обычно является злом, вы хотите избежать этого.Я даже не удивлюсь, если бы произошла некоторая оптимизация компилятора, а ваш второй фрагмент был бы сведен к первому (компиляторы любят избегать веток, они, вероятно, считают это хобби, но у них есть причина).Таким образом, в этих терминах первый пример намного чище и с ним легче иметь дело.
Существуют также кэши ЦП и другие проблемы, связанные с памятью.Я полагаю, что в обоих примерах вам необходимо загрузить память в кэш ЦП, чтобы вы могли либо прочитать ее, либо обновить.Хотя чтение не является проблемой, письмо должно распространять изменения вверх.Я не буду беспокоиться, если вы используете функцию в одном потоке (как указал @gby, ОС может внести изменения чуть позже).
Существует только один сценарий, который я могу придумать,это заставило бы меня рассмотреть решение из вашего второго примера.Если бы я разделял таблицу между потоками, чтобы работать над ней параллельно (без блокировки) и имел отдельные кэши для разных процессоров.Затем, каждый раз, когда вы изменяете строку кэша из одного потока, другой поток должен обновить свою копию перед чтением или записью в тот же блок памяти.Он известен как когерентность кэша , и это на самом деле может сильно повредить вашей производительности;в таком случае я мог бы рассмотреть условные записи.Но подождите, это, вероятно, далеко от вашего вопроса ...