Примеры оптимизации компилятора CLR - PullRequest
4 голосов
/ 15 сентября 2010

Через несколько месяцев я делаю презентацию о производительности и оптимизации .Net, я хотел предоставить несколько примеров ненужной оптимизации, которые в любом случае будут выполняться компилятором.

, где я могу найти некоторыеобъяснение того, на какие оптимизации компилятор на самом деле способен, возможно, до и после кода?

Ответы [ 2 ]

2 голосов
/ 15 сентября 2010

проверить эти ссылки

  1. C # Оптимизация компилятора
  2. оптимизация компилятора
  3. msdn

Также ознакомьтесь с этой книгой на MSIL1. Промежуточный язык Microsoft: сравнение между C # и VB.NET / Ниранджан Кумар

1 голос
/ 15 сентября 2010

То, что я думаю, будет даже лучше, чем примеры того, «что все равно будет сделано компилятором», - это примеры сценариев, когда компилятор не выполняет «оптимизации», которые разработчик предполагает, что приведет к улучшению производительности, но, на самом деле, этого не произойдет.

Например, иногда разработчик может предположить, что локальное кэширование значения повысит производительность, когда фактически экономия от наличия на стеке на одно меньшее значение превышает минимальную стоимость доступа к полю, который может быть встроен.

Или разработчик может предположить, что «принудительное включение» вызова метода (по сути, путем удаления самого вызова и замены скопированным / вставленным кодом) будет целесообразным, когда в действительности сохранение вызова метода как есть приведет к он становится встроенным компилятором только тогда, когда это имеет смысл (когда преимущество вставки перевешивает рост размера кода).

Это всего лишь общая идея, конечно. У меня нет конкретных примеров кода, на которые я могу указать; но, может быть, вы можете отыскать немного, если будете искать их.

...