Используйте профилировщик приличного качества и определите, где находятся ваши узкие места.
Тогда начинайте спрашивать, как улучшить производительность.
Любой, кто делает какие-либо общие заявления, такие как «избегать размышлений», не понимая ни вашего профиля производительности, ни вашей проблемной области, должен быть застрелен (или, по крайней мере, переучен). И учитывая размер .Net ландшафта, говорить об оптимизации C # практически бессмысленно: мы говорим о WinForms, ASP.Net, BizTalk, Workflow, SQL-CLR? Без контекста даже общие рекомендации могут быть в лучшем случае пустой тратой времени.
Подумайте также, что вы подразумеваете под «ускорением» и «повышением производительности». Вы имеете в виду более высокую эффективность использования ресурсов или меньшее предполагаемое время ожидания для конечного пользователя (при условии, что оно есть)? Это очень разные проблемы для решения.
Учитывая форум, я чувствую себя обязанным отметить, что в Code Complete есть достаточно хорошее освещение этих тем. Не C # конкретный ум. Но это хорошо. Имейте в виду, что микрооптимизации для конкретного языка вполне могут быть включены в следующую версию того компилятора, который вы используете, и если разница между for и foreach имеет для вас большое значение, вы все равно, вероятно, пишете на C ++, верно?
[Мне понравился ANTS Profiler от RedGate, но я думаю, что его можно улучшить]
С этим по пути, некоторые мысли:
- Используйте тип (SomeType) в предпочтении
instance.GetType (), когда это возможно
- Использование
foreach в предпочтении для
- Избегайте
бокс
- До (я думаю) 3 строки
это нормально делать StringA + StringB +
StringC. После этого вы должны использовать
StringBuilder