#benchmarkdotnet — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #benchmarkdotnet, aggregated by home.social.
-
А чё, так можно было? int == -int
Есть число, которое не меняется от смены знака. Минус перед ним ничего не делает, а модуля у него не существует: Math.Abs бросает исключение. Это int.MinValue . И это ещё не всё, что он умеет.
https://habr.com/ru/articles/1080958/
#NET #C# #переполнение #int #checked #MathAbs #двоичный_поиск #BenchmarkDotNet #производительность #CLR
-
А чё, так можно было? int == -int
Есть число, которое не меняется от смены знака. Минус перед ним ничего не делает, а модуля у него не существует: Math.Abs бросает исключение. Это int.MinValue . И это ещё не всё, что он умеет.
https://habr.com/ru/articles/1080958/
#NET #C# #переполнение #int #checked #MathAbs #двоичный_поиск #BenchmarkDotNet #производительность #CLR
-
А чё, так можно было? int == -int
Есть число, которое не меняется от смены знака. Минус перед ним ничего не делает, а модуля у него не существует: Math.Abs бросает исключение. Это int.MinValue . И это ещё не всё, что он умеет.
https://habr.com/ru/articles/1080958/
#NET #C# #переполнение #int #checked #MathAbs #двоичный_поиск #BenchmarkDotNet #производительность #CLR
-
А чё, так можно было? Dictionary == List
Ключ-структура из числа и строки. Поиск по словарю на 10 000 таких ключей занимает 74 975 микросекунд. Тот же ключ, объявленный record struct , — 3,354 микросекунды. Разница в 22 354 раза, и берётся она не из сравнения ключей.
https://habr.com/ru/articles/1080782/
#NET #C# #Dictionary #GetHashCode #структуры #хештаблица #BenchmarkDotNet #производительность #оптимизация #коллизии
-
А чё, так можно было? Dictionary == List
Ключ-структура из числа и строки. Поиск по словарю на 10 000 таких ключей занимает 74 975 микросекунд. Тот же ключ, объявленный record struct , — 3,354 микросекунды. Разница в 22 354 раза, и берётся она не из сравнения ключей.
https://habr.com/ru/articles/1080782/
#NET #C# #Dictionary #GetHashCode #структуры #хештаблица #BenchmarkDotNet #производительность #оптимизация #коллизии
-
А чё, так можно было? Приватное поле за 0,25 наносекунды
Чтение приватного поля через рефлексию занимает 8,96 наносекунды и выделяет 24 байта в куче. Тот же доступ без рефлексии — 0,25 наносекунды и ноль байт. Разница в 35,8 раза, а на .NET 8 она доходила до 108. Способ появился в .NET 8, применяется внутри библиотеки классов и работает без генерации кода.
https://habr.com/ru/articles/1080538/
#NET #C# #UnsafeAccessor #рефлексия #приватные_поля #боксинг #BenchmarkDotNet #производительность #оптимизация #NET_10
-
А чё, так можно было? Приватное поле за 0,25 наносекунды
Чтение приватного поля через рефлексию занимает 8,96 наносекунды и выделяет 24 байта в куче. Тот же доступ без рефлексии — 0,25 наносекунды и ноль байт. Разница в 35,8 раза, а на .NET 8 она доходила до 108. Способ появился в .NET 8, применяется внутри библиотеки классов и работает без генерации кода.
https://habr.com/ru/articles/1080538/
#NET #C# #UnsafeAccessor #рефлексия #приватные_поля #боксинг #BenchmarkDotNet #производительность #оптимизация #NET_10
-
А чё, так можно было? Приватное поле за 0,25 наносекунды
Чтение приватного поля через рефлексию занимает 8,96 наносекунды и выделяет 24 байта в куче. Тот же доступ без рефлексии — 0,25 наносекунды и ноль байт. Разница в 35,8 раза, а на .NET 8 она доходила до 108. Способ появился в .NET 8, применяется внутри библиотеки классов и работает без генерации кода.
https://habr.com/ru/articles/1080538/
#NET #C# #UnsafeAccessor #рефлексия #приватные_поля #боксинг #BenchmarkDotNet #производительность #оптимизация #NET_10
-
А чё, так можно было? Порядок полей = 1,8× к скорости
Класс без единого поля занимает 24 байта, с двумя полями int — те же 24, а с тремя — уже 32. В структуре достаточно поменять местами два поля, и её размер уменьшится с 24 байт до 16, а обход массива ускорится в 1,8 раза.
https://habr.com/ru/articles/1080204/
#NET #C# #память #размер_объекта #структуры #выравнивание #BenchmarkDotNet #производительность #оптимизация #CLR
-
А чё, так можно было? Порядок полей = 1,8× к скорости
Класс без единого поля занимает 24 байта, с двумя полями int — те же 24, а с тремя — уже 32. В структуре достаточно поменять местами два поля, и её размер уменьшится с 24 байт до 16, а обход массива ускорится в 1,8 раза.
https://habr.com/ru/articles/1080204/
#NET #C# #память #размер_объекта #структуры #выравнивание #BenchmarkDotNet #производительность #оптимизация #CLR
-
А чё, так можно было? Порядок полей = 1,8× к скорости
Класс без единого поля занимает 24 байта, с двумя полями int — те же 24, а с тремя — уже 32. В структуре достаточно поменять местами два поля, и её размер уменьшится с 24 байт до 16, а обход массива ускорится в 1,8 раза.
https://habr.com/ru/articles/1080204/
#NET #C# #память #размер_объекта #структуры #выравнивание #BenchmarkDotNet #производительность #оптимизация #CLR