Вы знаете ответ, который вы получите, верно?«Время это».
Вероятно, нет однозначного ответа.Во-первых, компилятор может выполнить оптимизацию за вас.Во-вторых, даже если это не так, косвенная адресация на уровне сборки не может быть значительно медленнее.В-третьих, это зависит от стоимости создания локальной копии по сравнению с количеством итераций цикла.Тогда есть эффекты кэширования, чтобы рассмотреть.
Я люблю оптимизировать, но это одно место, которое я бы определенно сказал: подождите, пока у вас не возникнет проблема, а затем экспериментируйте.Это возможная оптимизация, которая может быть добавлена при необходимости, а не одна из тех оптимизаций, которые нужно планировать заранее, чтобы избежать массового волнового эффекта позже.
Редактировать: (по направлению к окончательному ответу)
Компиляция обеих функций в режиме деблокирования и проверка IL с IL Dasm показывает, что в обоих местах "PossibleFaster""функция использует локальную переменную, у нее на одну инструкцию меньше
ldloc.0
против
ldarg.0; ldfld class Constraint[] Manager::mConstraints
Конечно, это еще один уровень, удаленный из машинного кода - вы не знаетечто JIT компилятор сделает для вас.Но вполне вероятно, что «PossibleFaster» немного быстрее.
Однако я по-прежнему не рекомендую добавлять дополнительную переменную, пока вы не уверены, что эта функция - самая дорогая вещь в вашей системе.