Ответ 1

Нет. Я никогда не обновлял его, но я думаю, что с соответствующими солями соли, общий совет и большинство эмпирических правил в статье все еще сохраняются хорошо.

(Тем не менее, было бы интересно повторить эксперимент сегодня, чтобы увидеть, как изменились примитивные времена, как сгенерированный код изменился и как изменились микропроцессоры.)

Относительные накладные расходы большинства примитивов не сильно изменились, но некоторые из них сильно изменились. Например, средняя производительность нестатического делегирования делегатов была значительно улучшена (в .NET 2.0, если я правильно помню). Мне не хотелось бы думать, что сегодня практикующий будет избегать обращения к делегату, потому что я сообщил об этом в 2003 году как очень дорогостоящий.

Начиная с .NET 1.1, я ожидал бы, что многие скомпилированные кодовые последовательности будут изменены; были бы новые оптимизаторы компилятора JIT (что не так хорошо проявляется в микрообъектах); разные сочетания кода JIT'd и NGEN'd (и NGEN не была изучена в моей статье); и ключевые подсистемы, такие как сборщик мусора, постоянно настраивались на протяжении многих лет.

Я повторяю свои предостерегающие советы о потенциале эффектов системы памяти, чтобы заглушить затраты на любое количество операций управляемого примитивного управляемого кода - и снова обратите внимание, что многое изменилось. Например, большая часть работы CLR в 03-04 вошла в улучшенное поведение рабочего набора (например, минимизацию грязных частных страниц) системных сборок NGEN'd.

Конечно, тема статьи - настоятельная необходимость вдумчиво и бдительно измерять производительность вашего кода, и эта тема вневременна.

Кстати, я всегда хотел сделать следующую статью о ожидаемых/типичных затратах времени и пространства в топ-сотнях или около того наиболее используемых методов .NET BCL, а также продемонстрировать в качестве предостерегающих рассказов несколько ужасов рассказы, которые мы нашли, работая над производительностью .NET. Это привело к очень интересному размышлению о том, как охарактеризовать эмпирическую работу библиотеки классов/структуры, как фактически используемую реальными практикующими в дикой природе...

Спасибо, что прочли его, и благодарю вас за ваш постоянный интерес.

p.s. Я вижу, что Вэнс Моррисон впоследствии написал замечательную двухчастную серию MSDN на эту тему - если бы вам понравилась моя статья, вы полюбите ее:

http://msdn.microsoft.com/en-us/magazine/cc500596.aspx

http://msdn.microsoft.com/en-us/magazine/cc507639.aspx

Ответ 2

Я так не думаю, и я не думаю, что обновленная версия будет совсем другой.

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

В статье рассказывается о низкоуровневых эффектах общих операций в управляемом коде, и это не сильно изменилось с тех пор, как была написана статья. Новые версии фреймворка добавили много функциональности, но все они построены на примитивах, которые были доступны с С# 1.0.

Ответ 3

Я не знаю того, что заменяет это, но книга CLR через С# предоставит вам много глубоких и актуальных знаний как работает среда CLR и где она потребляет много времени и ресурсов.