Как правильно замерить скорость работы кода в .NET

Поговорим о бенчмаркинге кода: о том, что это такое и для чего нужно. А также покажем, как на основе результатов бенчмаркинга оценить производительность кода в проекте, написанном на C#.
ATARI XL/XE, ретро-ноутбуки

Поговорим о бенчмаркинге кода: о том, что это такое и для чего нужно. А также покажем, как на основе результатов бенчмаркинга оценить производительность кода в проекте, написанном на C#.

Расскажу, как устроена архитектура консоли Nintendo Gameboy, как можно эмулировать её основные компоненты, какие решения я принимал в процессе разработки и какие инструменты использовал.

Недавно вышла Wizordum — очередной олдскульный шутер, письмо любви к Wolfenstein 3D, Heretic, Catacomb 3D и первой DOOM. Спрайтовая графика с рейкастингом, построенные из квадратных тайлов уровни и держащие верную булаву пиксельные руки главного героя. Разве что харизматичной морды около показателя здоровья не хватает.
Подобные релизы в последние годы — не редкость. Перезапуск DOOM 2016 года, а также такие инди-хиты как Dusk, Ion Fury и Amid Evil, вышедшие в знаковом для жанра 2018, напомнили геймерам, что шутеры — это не только Call of Duty и мультиплеерные проекты. А скорость, десятки пушек за спиной и грамотный дизайн уровней не менее важны, чем кинематографическая постановка и голливудские звёзды на озвучке.

За годы своего развития C# существенно эволюционировал; одна из самых мощных фич языка — это сопоставление с образцом (pattern matching).
Работая недавно над небольшим хобби-проектом, я наткнулся на такую прекрасную строку кода C#.
if (person is not null and { Age: > 18 })
{}
Выглядит изящно. Откровенно говоря, она заставила меня призадуматься.
Годами я писал проверки на null и свойства-аксессоры классическим образом:
if (person != null && person.Age > 18)
{}
Функционально? Да. Удобочитаемо? Не особо. Безопасно? Спорно, особенно когда код становится сложнее.
Я решил создать шорт YouTube об этом современном синтаксисе. Это небольшое забавное напоминание о том, что C# позволяет при помощи сопоставления с образцом комбинировать проверки на null и обращение к свойству в одно условие.
Я понятия не имел, что это короткое видео приведёт к гораздо более глубокому исследованию, и покажет мне, насколько полезно и универсально сопоставление с образцом в современном C#.
Эта фича повышает читаемость, уменьшает объём бойлерплейта и обеспечивает более выразительную обработку логики.
В этой статье мы изучим различные типы образцов, поддерживаемых в C#, их работу и поймём, когда их использовать, на понятных примерах из реального мира.
Расскажу о том, как решал одну из наиболее интересных задач в разминке Яндекс Алгоритмы 2023 г. Интересной я называю ее потому, что: 1) решал я кратно дольше, чем предыдущие 6 задач из разминки вместе взятые; 2) именно в этой задаче я проникся мощью префиксных сумм, и применением их для двумерных массивов.
И так задача:
Кролики очень любопытны. Они любят изучать геометрию, бегая по грядкам. Наш кролик как раз такой. Сегодня он решил изучить новую фигуру — квадрат.
Кролик бегает по грядке — клеточному полю N × M клеток. В некоторых из них посеяны морковки, в некоторых нет.
Помогите кролику найти сторону квадрата наибольшей площади, заполненного морковками полностью.
Формат ввода
В первой строке даны два натуральных числа N и M ( 1 ≤ N, M ≤ 1000). Далее в N строках расположено по M чисел, разделенных пробелами (число равно 0, если в клетке нет морковки или 1, если есть).
Формат вывода
Выведите одно число — сторону наибольшего квадрата, заполненного морковками.

Имея ограниченный бюджет и страсть к DIY‑проектам, я решил создать что‑то полезное, используя те компоненты, которые уже были у меня под рукой. Порывшись в своих запасах, я наткнулся на гироскопический датчик, ESP32-C3 и ёмкостные сенсоры, оставшиеся от предыдущих проектов — и тут меня осенило! Почему бы не собрать воздушную мышь с мультимедийными функциями? Вооружившись этими компонентами и щепоткой креативности, я поставил перед собой цель — собрать Bluetooth HID‑устройство с управлением движением, которое позволит буквально взмахами руки перемещаться по меню, наслаждаясь удобным управлением мультимедиа.
Но и это ещё не всё. Этот мини‑гаджет подходит не только для телевизоров, ПК и Android‑устройств — он также может управлять радиоуправляемыми моделями, роботизированными манипуляторами и другими умными устройствами с плавным управлением движением.



В этом месяце я решил узнать, как создать шрифт, который буду использовать в своём комиксе hakum. Раньше я рисовал текст в цифре на своём планшете. Результат оказывался хорошим, но иногда трудночитаемым (размер текста часто скакал на одной странице). Мне не хотелось использовать готовый шрифт, поэтому я решил создать собственный на основе своего рукописного текста. Шрифт повысит читаемость текста и сделает его однородным.
Примечание: это моя первая проба создания шрифта. Я не дизайнер, не освоил создание шрифтов в совершенстве и не специалист по программе FontForge. Возможно, существуют способы получше добиться того же результата. В этой статье я опишу свой процесс, который, вероятно, поможет другим начинающим создать свой первый шрифт (для личного пользования). Моя цель заключалась в создании шрифта TTF для применения в веб-публикациях с ограниченным набором символов (без полужирного и курсивного написания).

МФУ давно стали стандартом офисного оборудования. Хотя традиционно считается, что рациональнее всего покупать именно лазерные решения – особенно для бизнеса, – но в определенных сценариях лучше всего себя показывают именно струйные устройства. Они оказываются оптимальным решением для пользователей, которые нуждаются в качественной цветной печати при средних объемах документооборота, а также в организациях, где ключевым фактором выступает оптимизация затрат на печать.

Как уместить словарь размером 250 КБ в 64 КБ ОЗУ с возможностью выполнения быстрого поиска? Для справки: даже современные методики сжатия наподобие gzip -9 не могут сжать этот файл до размера меньше 85 КБ.
В 1970-х Дуглас Макилрой столкнулся с этой непростой задачей при реализации проверки правописания для Unix в AT&T. Из-за ограничений компьютера PDP-11 весь словарь должен был умещаться всего в 64 КБ ОЗУ. Кажется, подобную задачу решить невозможно.
Вместо того, чтобы использовать стандартные методики сжатия, Дуглас воспользовался преимуществами свойств данных, разработав алгоритм сжатия, отличавшийся от теоретического минимума сжатия всего на 0,03 бита. И по сей день этот рекорд остаётся непревзойдённым.
История spell в Unix — это не только любопытный исторический факт. Это мастер-класс по проектированию в условиях жёстких ограничений: анализа первооснов задачи, применения математических наблюдений и проектирования изящных решений, работающих в условиях строгого дефицита ресурсов.
В реляционных СУБД есть дефолтный тип индекса — B‑Tree: Tree в названии однозначно указывает на дерево, ну а В это, наверно, Binary? Или Balanced? Или Balanced Binary? Почему‑то долгое время я полагал, что это Balanced Binary, и эта версия даже «работала». На деле всё куда интереснее, предлагаю проследовать под кат, чтобы посмотреть на этот на самом деле скорее низкорослый куст и сравнить его с Red‑Black Tree на Java.

В этой статье пошагово разберём процесс сборки компактного ЧПУ-плоттера с 3D-печатными деталями. Это устройство управляется шаговыми двигателями Nema 17 и мини-сервоприводом, перемещаясь по линейным рельсам, и способно автоматически рисовать по заданному G-Code. Мы рассмотрим список необходимых деталей, этапы сборки механики, подключение электроники и настройку программного обеспечения.


Как известно, ABS пластик со временем желтеет, но его можно отбелить с помощью перекиси водорода — процесс отбеливания называется ретробрайтом. Если вас интересует химическая сторона вопроса, то можете прочитать её тут. А вот тут просто пример отбеливания.
Вкратце: моё мнение — отбеливайте в парах или растворе 40% перекиси водорода, лучше подогретой. И будет вам счастье.
Для эстетов: осторожно! Содержит кадры без евроремонта!

Здравствуйте, я мальчик Паша и я не умею пользоваться контрацептивами могу себе позволить много наследников. А ещё я люблю новые технологии.
Рассказываю опыт разработки сканера 35-мм киноплёнки со звуковой дорожкой за 150$ в картинках наглядно.
Вторая часть цикла статей об истории разработки сканера с низким бюджетом.


На блошином рынке на окраине Алматы я за 8 тысяч тенге (1500 рублей) купил 4 ретро ноутбука, сегодня расскажу об одном из них - NB 5620 от TOPPCs а в конце статьи о том как забрать его себе.