home.social

#benchmarkdotnet — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #benchmarkdotnet, aggregated by home.social.

  1. А чё, так можно было? int == -int

    Есть число, которое не меняется от смены знака. Минус перед ним ничего не делает, а модуля у него не существует: Math.Abs бросает исключение. Это int.MinValue . И это ещё не всё, что он умеет.

    habr.com/ru/articles/1080958/

    #NET #C# #переполнение #int #checked #MathAbs #двоичный_поиск #BenchmarkDotNet #производительность #CLR

  2. А чё, так можно было? int == -int

    Есть число, которое не меняется от смены знака. Минус перед ним ничего не делает, а модуля у него не существует: Math.Abs бросает исключение. Это int.MinValue . И это ещё не всё, что он умеет.

    habr.com/ru/articles/1080958/

    #NET #C# #переполнение #int #checked #MathAbs #двоичный_поиск #BenchmarkDotNet #производительность #CLR

  3. А чё, так можно было? int == -int

    Есть число, которое не меняется от смены знака. Минус перед ним ничего не делает, а модуля у него не существует: Math.Abs бросает исключение. Это int.MinValue . И это ещё не всё, что он умеет.

    habr.com/ru/articles/1080958/

    #NET #C# #переполнение #int #checked #MathAbs #двоичный_поиск #BenchmarkDotNet #производительность #CLR

  4. А чё, так можно было? Dictionary == List

    Ключ-структура из числа и строки. Поиск по словарю на 10 000 таких ключей занимает 74 975 микросекунд. Тот же ключ, объявленный record struct , — 3,354 микросекунды. Разница в 22 354 раза, и берётся она не из сравнения ключей.

    habr.com/ru/articles/1080782/

    #NET #C# #Dictionary #GetHashCode #структуры #хештаблица #BenchmarkDotNet #производительность #оптимизация #коллизии

  5. А чё, так можно было? Dictionary == List

    Ключ-структура из числа и строки. Поиск по словарю на 10 000 таких ключей занимает 74 975 микросекунд. Тот же ключ, объявленный record struct , — 3,354 микросекунды. Разница в 22 354 раза, и берётся она не из сравнения ключей.

    habr.com/ru/articles/1080782/

    #NET #C# #Dictionary #GetHashCode #структуры #хештаблица #BenchmarkDotNet #производительность #оптимизация #коллизии

  6. А чё, так можно было? Приватное поле за 0,25 наносекунды

    Чтение приватного поля через рефлексию занимает 8,96 наносекунды и выделяет 24 байта в куче. Тот же доступ без рефлексии — 0,25 наносекунды и ноль байт. Разница в 35,8 раза, а на .NET 8 она доходила до 108. Способ появился в .NET 8, применяется внутри библиотеки классов и работает без генерации кода.

    habr.com/ru/articles/1080538/

    #NET #C# #UnsafeAccessor #рефлексия #приватные_поля #боксинг #BenchmarkDotNet #производительность #оптимизация #NET_10

  7. А чё, так можно было? Приватное поле за 0,25 наносекунды

    Чтение приватного поля через рефлексию занимает 8,96 наносекунды и выделяет 24 байта в куче. Тот же доступ без рефлексии — 0,25 наносекунды и ноль байт. Разница в 35,8 раза, а на .NET 8 она доходила до 108. Способ появился в .NET 8, применяется внутри библиотеки классов и работает без генерации кода.

    habr.com/ru/articles/1080538/

    #NET #C# #UnsafeAccessor #рефлексия #приватные_поля #боксинг #BenchmarkDotNet #производительность #оптимизация #NET_10

  8. А чё, так можно было? Приватное поле за 0,25 наносекунды

    Чтение приватного поля через рефлексию занимает 8,96 наносекунды и выделяет 24 байта в куче. Тот же доступ без рефлексии — 0,25 наносекунды и ноль байт. Разница в 35,8 раза, а на .NET 8 она доходила до 108. Способ появился в .NET 8, применяется внутри библиотеки классов и работает без генерации кода.

    habr.com/ru/articles/1080538/

    #NET #C# #UnsafeAccessor #рефлексия #приватные_поля #боксинг #BenchmarkDotNet #производительность #оптимизация #NET_10

  9. А чё, так можно было? Порядок полей = 1,8× к скорости

    Класс без единого поля занимает 24 байта, с двумя полями int — те же 24, а с тремя — уже 32. В структуре достаточно поменять местами два поля, и её размер уменьшится с 24 байт до 16, а обход массива ускорится в 1,8 раза.

    habr.com/ru/articles/1080204/

    #NET #C# #память #размер_объекта #структуры #выравнивание #BenchmarkDotNet #производительность #оптимизация #CLR

  10. А чё, так можно было? Порядок полей = 1,8× к скорости

    Класс без единого поля занимает 24 байта, с двумя полями int — те же 24, а с тремя — уже 32. В структуре достаточно поменять местами два поля, и её размер уменьшится с 24 байт до 16, а обход массива ускорится в 1,8 раза.

    habr.com/ru/articles/1080204/

    #NET #C# #память #размер_объекта #структуры #выравнивание #BenchmarkDotNet #производительность #оптимизация #CLR

  11. А чё, так можно было? Порядок полей = 1,8× к скорости

    Класс без единого поля занимает 24 байта, с двумя полями int — те же 24, а с тремя — уже 32. В структуре достаточно поменять местами два поля, и её размер уменьшится с 24 байт до 16, а обход массива ускорится в 1,8 раза.

    habr.com/ru/articles/1080204/

    #NET #C# #память #размер_объекта #структуры #выравнивание #BenchmarkDotNet #производительность #оптимизация #CLR