CSHARP_GEPARD Telegram 110
Разные платформы и процессоры #бенч

В продолжение разговора о разных ОС и процессорах, который был начат в посте про Random, необходимо понимать следующее.

И это нужно знать. Это нужно проверять. И с этим нужно смириться.

Ваш код на разных платформах и на разных процессорах будет исполняться по разному. Такова реальность. Особенно, если дело касается микрооптимизаций.

Вот, например, у нас простейший бенчмарк. Это старый бенчмарк, который я периодически запускаю на разных версиях .NET и на разных компьютерах. Бенчмарк пытается воспроизвести Array bound check elimination (оптимизацию JIT, которая позволяет избегать проверки границ массива). Штука уже не очень актуальная, но я люблю этот бенч, так как я подсмотрел его аж в 2015 году у некого Андрея.

И вот, мы снова запускаем его в 2024 году на одном .NET 8, но на разных машинах.

Что мы видим:
1. Версия BenchmakDotNet и самого .NET одинаковая.
2. Разные ОС (Windows 11 и MacOS 14.5).
3. Разные процессоры (Ryzen 5800H и M3 Max).
4. Разная скорость исполнения (46 ns против 29 ns).
5. И совершенно разные относительные результаты.

Если на Windows результат _array.Length и константы примерно одинаковый, то на MacOS результаты разные, что несколько внезапно и совершенно не понятно.

IL код в моей IDE одинаковый.

Вывод: знайте результаты на целевой ОС и целевых процессорах. В идеале, нужно встроить проверку работы ключевых алгоритмов прямо в CI/CD. Всё иное (я говорю про микрооптимизации) - результат на вашей и только вашей машине.

Код бенчмарка в комментариях.
👍14🔥43



tgoop.com/csharp_gepard/110
Create:
Last Update:

Разные платформы и процессоры #бенч

В продолжение разговора о разных ОС и процессорах, который был начат в посте про Random, необходимо понимать следующее.

И это нужно знать. Это нужно проверять. И с этим нужно смириться.

Ваш код на разных платформах и на разных процессорах будет исполняться по разному. Такова реальность. Особенно, если дело касается микрооптимизаций.

Вот, например, у нас простейший бенчмарк. Это старый бенчмарк, который я периодически запускаю на разных версиях .NET и на разных компьютерах. Бенчмарк пытается воспроизвести Array bound check elimination (оптимизацию JIT, которая позволяет избегать проверки границ массива). Штука уже не очень актуальная, но я люблю этот бенч, так как я подсмотрел его аж в 2015 году у некого Андрея.

И вот, мы снова запускаем его в 2024 году на одном .NET 8, но на разных машинах.

Что мы видим:
1. Версия BenchmakDotNet и самого .NET одинаковая.
2. Разные ОС (Windows 11 и MacOS 14.5).
3. Разные процессоры (Ryzen 5800H и M3 Max).
4. Разная скорость исполнения (46 ns против 29 ns).
5. И совершенно разные относительные результаты.

Если на Windows результат _array.Length и константы примерно одинаковый, то на MacOS результаты разные, что несколько внезапно и совершенно не понятно.

IL код в моей IDE одинаковый.

Вывод: знайте результаты на целевой ОС и целевых процессорах. В идеале, нужно встроить проверку работы ключевых алгоритмов прямо в CI/CD. Всё иное (я говорю про микрооптимизации) - результат на вашей и только вашей машине.

Код бенчмарка в комментариях.

BY C# Heppard





Share with your friend now:
tgoop.com/csharp_gepard/110

View MORE
Open in Telegram


Telegram News

Date: |

Avoid compound hashtags that consist of several words. If you have a hashtag like #marketingnewsinusa, split it into smaller hashtags: “#marketing, #news, #usa. 5Telegram Channel avatar size/dimensions As of Thursday, the SUCK Channel had 34,146 subscribers, with only one message dated August 28, 2020. It was an announcement stating that police had removed all posts on the channel because its content “contravenes the laws of Hong Kong.” Those being doxxed include outgoing Chief Executive Carrie Lam Cheng Yuet-ngor, Chung and police assistant commissioner Joe Chan Tung, who heads police's cyber security and technology crime bureau. Co-founder of NFT renting protocol Rentable World emiliano.eth shared the group Tuesday morning on Twitter, calling out the "degenerate" community, or crypto obsessives that engage in high-risk trading.
from us


Telegram C# Heppard
FROM American