Одна из основных перфомансных фич нового .NET это Dynamic PGO, Profile-guided optimization. Они позволяют существенно ускорить ваше приложение за счет сбора дополнительной информации.
Егор Богатов, один из разработчиков .NET, написал разбор возможностей PGO — с деталями и бенчмарками.
https://gist.github.com/EgorBo/dc181796683da3d905a5295bfd3dd95b
Егор Богатов, один из разработчиков .NET, написал разбор возможностей PGO — с деталями и бенчмарками.
https://gist.github.com/EgorBo/dc181796683da3d905a5295bfd3dd95b
Gist
Dynamic PGO in .NET 6.0.md
Dynamic PGO in .NET 6.0.md. GitHub Gist: instantly share code, notes, and snippets.
Кстати, в этом же разборе нашел ссылку на целую кучу бенчмарков по .NET.
Выглядит странно и хаотично, но пользоваться этим можно примерно так. В самом низу экрана написан номер страницы. Нажимаете на него — получаете список категорий бенчмарков. Выбираете интересную (например, Blazor WASM) — получаете возможность наблюдать, как с разнообразными изменениями улучшался перфоманс той или иной фичи.
Где-то изменений совсем не видно, где-то они незначительные, но в некоторых местах можно посмотреть на красивые-впечатляющие циферки.
https://msit.powerbi.com/view?r=eyJrIjoiYTZjMTk3YjEtMzQ3Yi00NTI5LTg5ZDItNmUyMGRlOTkwMGRlIiwidCI6IjcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0NyIsImMiOjV9
Выглядит странно и хаотично, но пользоваться этим можно примерно так. В самом низу экрана написан номер страницы. Нажимаете на него — получаете список категорий бенчмарков. Выбираете интересную (например, Blazor WASM) — получаете возможность наблюдать, как с разнообразными изменениями улучшался перфоманс той или иной фичи.
Где-то изменений совсем не видно, где-то они незначительные, но в некоторых местах можно посмотреть на красивые-впечатляющие циферки.
https://msit.powerbi.com/view?r=eyJrIjoiYTZjMTk3YjEtMzQ3Yi00NTI5LTg5ZDItNmUyMGRlOTkwMGRlIiwidCI6IjcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0NyIsImMiOjV9
На YouTube начали заливать записи с прошедших DotNext, так что я буду иногда кидаться в вас самыми интересными из этих докладов.
Начнем с одного из самых уникальных выступлений прошедших конференций. Два Дмитрия, Иванов и Мордвинов, рассказали нам о символьном исполнении в .NET. Доклад получился практическим, исследовательским и мозговзрывающим одновременно.
Раз — тесты можно не писать, тесты можно генерить. Для этого в .NET есть IntelliTest. Объяснять, почему генерация тестов это приятно вроде бы не нужно — их и писать лень, и ошибиться в этом процессе легко. Но как гарантировать, что тесты корректно проверяют валидность вашего кода?
Два — под всем этим лежит солидная теоретическая база, в основе которой SMT-солверы. Мощнейший инструмент, позволяющий решать очень разнообразные проблемы — и Дмитрии кое-что нам об этом расскажут.
Три — такой подход может изменить то, как мы вообще программируем. И об этом, разумеется, докладчики тоже поговорят.
Короче, очень любопытный контент получился, не жаль потратить час времени.
https://youtu.be/csbuDEEWXHw
Начнем с одного из самых уникальных выступлений прошедших конференций. Два Дмитрия, Иванов и Мордвинов, рассказали нам о символьном исполнении в .NET. Доклад получился практическим, исследовательским и мозговзрывающим одновременно.
Раз — тесты можно не писать, тесты можно генерить. Для этого в .NET есть IntelliTest. Объяснять, почему генерация тестов это приятно вроде бы не нужно — их и писать лень, и ошибиться в этом процессе легко. Но как гарантировать, что тесты корректно проверяют валидность вашего кода?
Два — под всем этим лежит солидная теоретическая база, в основе которой SMT-солверы. Мощнейший инструмент, позволяющий решать очень разнообразные проблемы — и Дмитрии кое-что нам об этом расскажут.
Три — такой подход может изменить то, как мы вообще программируем. И об этом, разумеется, докладчики тоже поговорят.
Короче, очень любопытный контент получился, не жаль потратить час времени.
https://youtu.be/csbuDEEWXHw
YouTube
Дмитрий Иванов, Дмитрий Мордвинов — Символьное исполнение в .NET
—
В этом докладе вы узнаете про ближайшее будущее разработки, когда большая часть работы по тестированию и верификации программ будет происходить автоматически по щелчку мыши. Не все программисты любят писать юнит-тесты. Сложно их винить: творчества в этом…
В этом докладе вы узнаете про ближайшее будущее разработки, когда большая часть работы по тестированию и верификации программ будет происходить автоматически по щелчку мыши. Не все программисты любят писать юнит-тесты. Сложно их винить: творчества в этом…
Еще немного интересного — увидел на днях в Твиттере гайд по поиску дедлоков. Причем не просто гайд, а игру-тренажер с огромным количеством практических заданий. Кажется, это самое полное и наглядное руководство по дедлокам, которое можно найти в интернете.
http://deadlockempire.github.io/
http://deadlockempire.github.io/
deadlockempire.github.io
The Deadlock Empire
Slay dragons, learn
concurrency! Play the cunning Scheduler, exploit flawed
programs and defeat the armies of the Parallel Wizard.
concurrency! Play the cunning Scheduler, exploit flawed
programs and defeat the armies of the Parallel Wizard.
Нашел в CODE Magazine неплохую статью, посвященную .NET Upgrade Assistant — новому инструменту от Microsoft, который позволяет существенно упростить миграцию со старых версий .NET.
https://www.codemag.com/article/2111032
https://www.codemag.com/article/2111032
Codemag
Bring Your .NET Apps Forward with the .NET Upgrade Assistant
Now that you’re using all the shiny new tools in .NET 6, you need to make sure that the rest of your .NET Framework is keeping up. Mike shows you how th...
Отличная коллекция советов о том, как правильно использовать разные мелочи из нового .NET
https://www.daveabrock.com/2021/12/08/do-this-not-that-the-net-6-edition/
https://www.daveabrock.com/2021/12/08/do-this-not-that-the-net-6-edition/
Dave Brock
Don't Do That, Do This: The .NET 6 Edition
In this C# Advent post, we have a little fun and talk about some nice, lesser hyped .NET 6 features that might make you happy.
Ну и вкину очередную статью о перфомансе. На этот раз сравнивается производительность старого .NET Framework 4.8 и нового .NET 6
https://nietras.com/2021/11/26/dotnet-6-vs-4-8-gc-stats/
https://nietras.com/2021/11/26/dotnet-6-vs-4-8-gc-stats/
Nietras
.NET 6 vs .NET 4.8 GC stats - ~64% shorter max GC pause times (due to 1 letter removed in runtime)
Recently I tweeted about performance
improvements we
are seeing from migrating an industrial machine learning application (desktop)
from .NET Framework 4.8 to .NET 6 which got more likes than any blog post I’ve
made before. Additionally, Alex Yakunin’s blog…
improvements we
are seeing from migrating an industrial machine learning application (desktop)
from .NET Framework 4.8 to .NET 6 which got more likes than any blog post I’ve
made before. Additionally, Alex Yakunin’s blog…
Вышел ежемесячный сборник новостей о .NET от JetBrains!
Из интересного, помимо очевидных релизов, там есть гайд по .NET разработке на новых M1 маках, ответ на вопрос «как работать с DI в Minimal API», а также интересная статья о том, как Source Generators могут сделать ваш код более уязвимым для атак. Советую пройтись, подборка получилась хорошая.
https://blog.jetbrains.com/dotnet/2021/12/09/net-annotated-monthly-december-2021/
Из интересного, помимо очевидных релизов, там есть гайд по .NET разработке на новых M1 маках, ответ на вопрос «как работать с DI в Minimal API», а также интересная статья о том, как Source Generators могут сделать ваш код более уязвимым для атак. Советую пройтись, подборка получилась хорошая.
https://blog.jetbrains.com/dotnet/2021/12/09/net-annotated-monthly-december-2021/
В .NET сообществе очередная драма: все обсуждают предлагаемый в C# 11 оператор !!
Идея простая: оператор добавляется к сигнатуре параметра функции и означает запрет null. То есть если параметр, отмеченный таким оператором, будет равен null — вы получите исключение.
Вопросов у людей много. Зачем нужен оператор, который просто заменяет NullReferenceExceptions на ArgumentNullExceptions? Не странно ли это сочетается с nullable типами, зачем добавлять такую механику «сбоку»? Почему, в конце концов, два восклицательных знака?
Следить за дискуссией вы можете в этом issue в репозитории dotnet.
Идея простая: оператор добавляется к сигнатуре параметра функции и означает запрет null. То есть если параметр, отмеченный таким оператором, будет равен null — вы получите исключение.
Вопросов у людей много. Зачем нужен оператор, который просто заменяет NullReferenceExceptions на ArgumentNullExceptions? Не странно ли это сочетается с nullable типами, зачем добавлять такую механику «сбоку»? Почему, в конце концов, два восклицательных знака?
Следить за дискуссией вы можете в этом issue в репозитории dotnet.
Совсем забыл написать: на прошлой неделе вышел .NET 7 Preview 1.
Если кратко пробежаться по анонсу, то основной фокус сделан на приближающемся релизе MAUI, улучшениях для облачных приложений и упрощении миграции со старых версий.
Но это только на поверхности. В анонсах ASP.NET, Entity Framework и в отдельных issue на GitHub можно найти много интересных деталей. Так что ждите отдельных постов о самых интересных изменениях на этой неделе.
Если кратко пробежаться по анонсу, то основной фокус сделан на приближающемся релизе MAUI, улучшениях для облачных приложений и упрощении миграции со старых версий.
Но это только на поверхности. В анонсах ASP.NET, Entity Framework и в отдельных issue на GitHub можно найти много интересных деталей. Так что ждите отдельных постов о самых интересных изменениях на этой неделе.
Microsoft News
Announcing .NET 7 Preview 1
Announcing .NET 7 Preview 1, the first preview of a major .NET version that will focus on app modernization, cloud native, containers and more.
А пока можете почитать недавно вышедший выпуск .NET Annotated Monthly.
В этом месяце там много интересных туториалов: например, гайд по разработке игры с помощью MAUI или статья от Стива Фентона, помогающая лучше понять LINQ.
В этом месяце там много интересных туториалов: например, гайд по разработке игры с помощью MAUI или статья от Стива Фентона, помогающая лучше понять LINQ.
The JetBrains Blog
.NET Annotated Monthly | February 2022 | The .NET Tools Blog
Did you know? On Windows, it's not possible to create a folder named "con". Windows will display a dialog saying "The specified device name is invalid". That's because “con” is a reserved word dating
Простой пример полезности PGO от Бартоша Адамчевски.
Если кто-то забыл, Profile Guided Optimisations это одна из основных фич .NET 6. Подробнее о ней можно почитать в статье Егора Богатова.
Если кто-то забыл, Profile Guided Optimisations это одна из основных фич .NET 6. Подробнее о ней можно почитать в статье Егора Богатова.
Графика с историей версий .NET к двадцатилетию платформы
https://nietras.com/2022/02/13/dotnet-and-csharp-versions/
https://nietras.com/2022/02/13/dotnet-and-csharp-versions/
И еще немного интересностей. В эту пятницу пройдет митап со Стасом Сидристым, на котором он расскажет о потоках и пуле потоков в .NET. С хардкором и реализацией собственного пула, все как положено.
Регистрация вот тут, 25 февраля, 17:00 по Москве
Регистрация вот тут, 25 февраля, 17:00 по Москве
eventskbkontur.timepad.ru
Как работают потоки в .NET и зачем нужен пул потоков / События на TimePad.ru
Мы возвращаемся с очередным митапом DotEducation. На этот раз в центре внимания работа с потоками в .NET.
Что там с релизом MAUI?
Неделю назад вышло уже тринадцатое превью MAUI и многим интересно — много ли еще осталось реализовать и когда будет релиз?
Если кратко — релиз скоро, а реализована большая часть вещей, которые Microsoft планируют сделать до релиза. Отслеживать текущий статус MAUI можно на соответствующей странице в репозитории проекта.
Пока самые большие сомнения вызывает решение Microsoft отдать поддержку Linux на откуп сообществу. На текущий момент за ее реализацией можно наблюдать в этом форке, но отсутствие официальной поддержки огорчает.
Неделю назад вышло уже тринадцатое превью MAUI и многим интересно — много ли еще осталось реализовать и когда будет релиз?
Если кратко — релиз скоро, а реализована большая часть вещей, которые Microsoft планируют сделать до релиза. Отслеживать текущий статус MAUI можно на соответствующей странице в репозитории проекта.
Пока самые большие сомнения вызывает решение Microsoft отдать поддержку Linux на откуп сообществу. На текущий момент за ее реализацией можно наблюдать в этом форке, но отсутствие официальной поддержки огорчает.
Microsoft News
Announcing .NET MAUI Preview 13
.NET MAUI Preview 13 has shipped with more controls, layout updates, and performance improvements.
К слову о MAUI. Недавно прошла конференция .NET Frontend Day, привлекающаяся к себе внимание как минимум названием.
Очевидно, ее основной темой были доклады, посвященные разным UIным технологиям — Blazor, Xamarin и MAUI. Так вот, наткнулся в Твиттере на приличный обзор докладов с конференции, советую обратить внимание.
https://blog.taranissoftware.com/net-frontend-day-2022-xamarin-and-maui-recap
Очевидно, ее основной темой были доклады, посвященные разным UIным технологиям — Blazor, Xamarin и MAUI. Так вот, наткнулся в Твиттере на приличный обзор докладов с конференции, советую обратить внимание.
https://blog.taranissoftware.com/net-frontend-day-2022-xamarin-and-maui-recap
Sailing the Sharp Sea
.NET Frontend Day 2022: Xamarin & MAUI Recap
.NET Frontend Day 2022 had a great line-up of speakers and topics. I highlight the sessions that were of most interest to Xamarin and .NET MAUI developers.
Отличный пример полезности Source Generators из анонса .NET 7 это клиент для SignalR на основе генераторов. Удобная типизация и хороший перфоманс.
https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-net-7-preview-1/#signalr-client-source-generator
https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-net-7-preview-1/#signalr-client-source-generator
Microsoft News
ASP.NET Core updates in .NET 7 Preview 1
.NET 7 Preview 1 is now available! Check out what's new in ASP.NET Core in this update and learn about the roadmap for ASP.NET Core in .NET 7.
Разумеется, самый заметный пример использования Source Generators это обновленный Regex. Заметнее всего здесь выигрыш по перфомансу, но помимо всего прочего, использование генераторов снижает вероятность случайной ошибки.
Неплохой разбор можно увидеть в этом видео.
Неплохой разбор можно увидеть в этом видео.
YouTube
How Regex got so much faster in .NET 7
Check out my courses: https://dometrain.com
Become a Patreon and get source code access: https://www.patreon.com/nickchapsas
Hello everybody I'm Nick and in this video I will talk about the huge performance improvements in .NET 7 and more specifically in…
Become a Patreon and get source code access: https://www.patreon.com/nickchapsas
Hello everybody I'm Nick and in this video I will talk about the huge performance improvements in .NET 7 and more specifically in…
Microsoft наконец-то показали планы на C# 11!
Полный анонс можно найти в официальном блоге, а пока обозначим основные моменты:
- Паттерн матчинг для листов и массивов
- Оператор для проверки параметров на null, о нем мы уже писали
- Перенос строк в интерполированных строках
Новый функционал можно попробовать уже сейчас с Visual Studio 17.1 и .NET SDK 6.0.200
Полный анонс можно найти в официальном блоге, а пока обозначим основные моменты:
- Паттерн матчинг для листов и массивов
- Оператор для проверки параметров на null, о нем мы уже писали
- Перенос строк в интерполированных строках
Новый функционал можно попробовать уже сейчас с Visual Studio 17.1 и .NET SDK 6.0.200
Microsoft News
Early peek at C# 11 features
Learn about the C# 11 preview features you can try out in Visual Studio 17.1 and the .NET SDK version 6.0.200.