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

В продолжение разговора о разных ОС и процессорах, который был начат в посте про 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/109
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/109

View MORE
Open in Telegram


Telegram News

Date: |

Polls A few years ago, you had to use a special bot to run a poll on Telegram. Now you can easily do that yourself in two clicks. Hit the Menu icon and select “Create Poll.” Write your question and add up to 10 options. Running polls is a powerful strategy for getting feedback from your audience. If you’re considering the possibility of modifying your channel in any way, be sure to ask your subscribers’ opinions first. Telegram channels enable users to broadcast messages to multiple users simultaneously. Like on social media, users need to subscribe to your channel to get access to your content published by one or more administrators. Some Telegram Channels content management tips A vandalised bank during the 2019 protest. File photo: May James/HKFP.
from us


Telegram C# Heppard
FROM American