Похоже, вы только что нашли ситуацию, в которой .NET 4 намного быстрее.По умолчанию ваше приложение работает с платформой, для которой оно было создано.Когда вы заставляете использовать это .NET 4, это быстрее.Это может быть улучшение JIT-компилятора, которое может попасть в вашу ситуацию, или это может быть улучшение фреймворка - но не должно быть слишком удивительно, что некоторые вещи быстрее в новых версиях.
(Для чего это стоитЯ бы увеличил количество итераций, на которые вы рассчитываете время, если бы вы были ... на моем компьютере под .NET 4, каждая итерация составляет всего 10 мс, что на самом деле не является хорошим измерением.хотя бы несколько секунд.)
(И, как и Митч, я могу подтвердить, что вижу тот же эффект.)
РЕДАКТИРОВАТЬ: Я только что исследовал это немного дальше, и увидел интересныйэффект ... я предполагаю, что мы звоним haystack.IndexOf(needle, StringComparison.OrdinalIgnoreCase)
:
- . В .NET 2 результаты примерно одинаковы, но большая "игла"
- Вкл..NET 4:
- Если
needle
больше haystack
(согласно вашему примеру) .NET 4 намного быстрее, чем .NET 2 - Если
needle
того же размеракак haystack
, .NET 4 на немного бит медленнее, чем .NET 2 - Если
needle
меньшечем haystack
, .NET 4 на лот медленнее, чем .NET 2
(Это тест, в котором первый символ needle
никогда не появляется в haystack
, кстати.