RU

Бенчмаркая try/finally: один finally — и метод в 6,45 раза медленнее

Один try/finally внутри метода — и он работает в разы медленнее. Сам блок тут ни при чём, он не выполняет ни одной лишней инструкции. Причина в реше…

try-finallyвстраиваниеJITBenchmarkDotNetNET 10динамический профильforeachмашинный кодбенчмарк
Habr
RU

Бенчмаркая ZLinq: один IEnumerable в сигнатуре — и .NET 10 быстрее библиотеки в 3,9 раза

ZLinq — замена LINQ без аллокаций. На .NET 8 и .NET 9 время одинаковое. На .NET 10 иначе: массив тот же, но если параметр объявлен как IEnumerable,…

ZLinqLINQIEnumerableаллокациибенчмаркBenchmarkDotNetпроизводительность.NET 10JITдизассемблер
Habr
RU

Бенчмаркая проверки границ: фикс, который шёл 8  лет, и проверка, которая жива до сих пор

Уважаемые читатели, в этой статье я хочу рассказать о проверках границ массива и представить свои выводы. Каждое обращение arr[i] обязано проверить…

benchmarkdotnetJITbounds checkпроверка границRyuJIT.NET 11дизассемблированиепроизводительностьоптимизациямассивы
Habr
RU

Бенчмаркая foreach и энумераторы: аллокации, которые прятались 10 лет

Уважаемые читатели, в этой статье я хочу рассказать о скрытых аллокациях в обычном foreach и представить свои выводы. Тесты сделаны на .net 8, .net…

benchmarkdotnetforeachboxingаллокацииGCJITescape analysis.NET 10производительностьSortedList
Habr