Если вас беспокоит производительность, запустите профайлер. Then изменение код. Скорее всего, вы никогда не за миллион лет не угадаете 100% правильно, где время идет. Вы можете изменить время 0,02% и оставить метод, который вносит 62% бремени. Вы также можете сделать это хуже. Без профайлера и доказательств вы слепы.
Вы не можно предположить, что JIT будет встраивать свойство геттер. Есть много причин, по которым он может или не может этого сделать; размер тела метода, виртуальный, значение по отношению к ссылочному типу, архитектура, отладчик прилагается и т. д.
«Подъем» по-прежнему имеет место и все еще может сэкономить , если код вызывается повторно в плотной петле; например:
var count = list.Count;
for(int i = 0 ; i < count ; i++) {...}
(забыть for
против foreach
дискуссии пт выше - это ортогональная обсуждение). В приведенном выше примере «подъемник» поможет выполнить работу. Но только, чтобы быть действительно заблуждение - с массивами, это наоборот, и это более эффективно не талей это:
for(int i = 0 ; i < arr.Length ; i++) {...}
JIT-распознает это и удаляет проверки границ (как массивы фиксированными размер).
Я не знал об этом последнем! Приятно знать, спасибо! – Groo
Спасибо за информацию, но я прошу о хорошей ссылке для этой информации. –
. Мое замечание состоит в том, что * no * ссылка действительно поможет вам в этом. ** Профилер ** будет. –