Странное увеличение производительности в проектах, составленных в VS 2008 по сравнению с VS2005 - PullRequest
1 голос
/ 17 июля 2009

У меня есть сторонняя библиотека и простой тест производительности, который я пишу сам, чтобы проверить эту библиотеку на производительность. Сторонняя библиотека - это библиотека C ++ / CLI .NET, и большая часть кода там неуправляемая. Эта библиотека собрана для .NET Framework 2.0. Мой тест производительности - это управляемый код на C #, который добавляет небольшие издержки к библиотеке, только простые вызовы методов, подписку на обработчики событий, закрытие / открытие соединений и т. Д. Библиотека выполняет некоторые операции в нескольких рабочих потоках, а также работает с сокетами.

Странная вещь - когда я компилирую с помощью бенчмарк-теста с VS 2005 и когда я делаю то же самое с VS 2008 - у меня были разные значения производительности (VS 2008 на 10% лучше).

Что может вызвать повышение производительности, если весь мой код использует только функции .NET 2.0, не используются язык / функции или библиотеки из 3.5. Мой тестовый проект относится только к System.dll и сторонним dll, а код тестирования абсолютно одинаков в проектах VS2005 и VS2008?

1 Ответ

2 голосов
/ 17 июля 2009

Даже если вы используете только функциональность 2.0 (язык? Библиотека?), Может случиться так, что 3.5 JIT просто оптимизирует код или что некоторые библиотеки будут более оптимизированы.

Другими словами: в то время как интерфейсы функций 2.0 остаются теми же самыми обратными, это не должно быть в случае реализации. Я предполагаю, что GC (и его блокировка также постоянно настраивается)

Будет очень трудно понять, что именно вызывает разницу. Это может быть так же просто, как оптимизировать некоторые более простые функции (например, memmove, поиск байта / слова в mem) для более новых процессоров.

...