Кодовой Барабанщик
112 subscribers
304 photos
103 videos
175 links
БлогеРОК программиста-барабанщика 👨‍💻🥁
Telegram: @GranSteL
YouTube: https://youtube.com/@granstel
ВКВидео: https://vkvideo.ru/@drummer_programmer
Download Telegram
Так моя #ИИшница видит себя (запрос "нарисуй себя")
❤3
Иногда нужен грув, иногда - рефакторинг, главное - соблюдать баланс между ними🪨
Поздравляю причастых к программированию - с Днём программиста! 👩‍💻
А причастных к барабанам - с прошедшим Днём барабанщика! 🥁
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥21
Нашёл тут запрос, по которому #ИИшница рисует такие вот постеры
Если нарисуешь свой, закидывай в комменты))
❤1
Forwarded from C# Short Posts 🔞
🎯 Instrumented Tier0: профилирование кода

В прошлый раз мы разобрали два уровня компиляции: Tier0 — быстрый и неоптимизированный, и Tier1 — оптимизированный, для горячих методов. Но между ними прячется ещё одна стадия❗️

Возьмём наш однострочник hello world, завернём его в метод Hello() для удобства измерений и запустим один раз. В сводке JIT будет одна строка:

Program:Hello() [Tier0]


Один вызов — один дешёвый заход на Tier0, и программа кончилась. А теперь позовём тот же метод в цикле много раз:

Program:Hello() [Tier0]
Program:Hello() [Instrumented Tier0]
Program:Hello() [Tier1]


🕵️ Что за Instrumented Tier0?

Это тот же неоптимизированный Tier0, но со встроенными счётчиками. Пока метод работает на нём, рантайм записывает статистику: сколько раз метод вызвали, какие ветки чаще срабатывают, какие типы приходят в вызовы. Такая статистика — это профиль работы метода, а сам сбор называется профилированием

Дальше, на стадии Tier1, JIT оптимизирует метод с учётом профиля его работы, чтобы ускорить его наиболее горячие точки, а не просто делать это наугад

Такая оптимизация называется PGO — Profile-Guided Optimization, и по умолчанию она включена с .NET8

⏱️ Почему до Tier1 теперь два этапа

В прошлом посте я говорил про порог в 30 вызовов между Tier0 и Tier1. Если быть душным точным, это актуально для кода, работающего на .NET < 8 или .NET>= 8, но с отключенной PGO (DOTNET_TieredPGO=0). То есть в более свежих версиях фреймворка путь до Tier1 стал в два раза дольше из-за появления ещё одной стадии, которая длится так же примерно 30 вызовов (ну или смотря что у тебя указано в DOTNET_TC_CallCountThreshold)

Первые 30 вызовов — это обычный Tier0, без особых оптимизаций. На 31-м метод перекомпилируется в Instrumented Tier0, на котором начинает собирать профиль работы метода. Инструментированная версия работает ещё 30 вызовов, и только потом метод компилируется на Tier1 — уже с оптимизациями по профилю. Мотивация простая: чтобы оптимизировать по профилю, профиль сначала надо собрать🧠

🅰️ Что с этим делать

🟢 В релизных сборках кода начиная с .NET8 профилирование включено по умолчанию
🟢 Профилирование позволяет более точно ускорить горячий код: JIT оптимизирует его по реальному поведению
🟢 Прогрев до Tier1 стал дольше: профилю нужно накопиться

А зависит ли этот путь от каких-нибудь факторов? Конечно! Но об этом расскажу в следующем посте 👉

🧑‍💻dp🥁
#dotnet #csharp #инженерныештучки #heavywednesday
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
111 - красивое число! 🤩
Спасибо за подписку!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥33
В последнее время многие сюжеты, которые добавляются в игру #занимательныеистории, так или иначе отражают события из моей жизни, и этот не является исключением😉
3🔥2
Forwarded from C# Short Posts 🔞
Даже самым хардкорным ребятам надо отдыхать, так что отдыхаем, мои чюваки 🕺
🧑‍💻dp🥁
#heavywednesday
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Смотрю #DotNext, жду доклад Димаса из C# Short Posts, который начнётся уже через 15 минут!
❤4🔥2🫡1
Это я ездил в Грузию🇬🇪 чтобы воспользоваться нашим продуктом за рубежом🤘

Помимо приложения Юрент🛴 мы работаем ещё и над приложением JET🟦 и, как в случае и с Додо, очень интересно сравнить опыт использования нашего сервиса: какие здесь самокаты, как работает приложение, есть ли что-то необычное. Например, здесь есть зарядные станции с павербанками⚡ которые можно арендовать непосредственно через наше приложение, что очень удобно: если на счету есть бонусы, они распространяются и на самокаты, и на зарядки

Ещё очень приятно видеть, что интеграция с Яндекс GO, над которой работает наша команда, актуальна и за рубежом, и арендовать наши самокаты можно так же через приложение партнёра💪

Вообще, интересно как всё сложилось: уже три года я периодически приезжаю в Батуми к друзьям, и мне очень нравится кататься здесь на самокатах по бульвару (по набережной): выделенная велодорожка, пальмы, море, красота 🌊
А через какое-то время эти самокаты и поездки на них стали моим продуктом, которым я уже не только сам пользуюсь, но и работаю над его качеством📈

Думаю, это круто, когда работаешь над тем, что тебе нравится, и чувствуешь свою причастность, по крайней мере мне нравится❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥321