Pull to refresh

DotNext — Moscow 2016. Как это было

Reading time5 min
Views6.4K


Впервые я побывал на «Дотнексте» летом этого года в Питере. Тогда меня привлекли имена Дино Эспозито и Саши Гольдштейна в списке докладчиков. По книге Дино я когда-то давно осваивал ASP.NET. Pro .NET Performance не читал, но отзывы слышал лишь позитивные. Никогда не считал performance своей сильной стороной, а необходимость сталкиваться по работе с оптимизацией производительности стала возникать довольно часто. Вдобавок, на тот момент у меня были смешанные чувства по отношению к .NET Core. Хотелось узнать, что думают другие по этому поводу. Решающим фактором, конечно же, стало желание девушки съездить в Питер на пару деньков. Мы поехали и не пожалели:)

С Москвой все было сложнее – этот город я недолюбливаю примерно так-же, как зиму в России. Чашу весов на этот раз сдвинули доклады C++ через C#, Моя жизнь с актерами, Squeezing the Hardware to Make Performance Juice и присутствие на конференции сотрудника Stack Overflow. Каждый из них был интересен в практическом плане, так что поездка предстояла не увеселительная, а рабочая.

Открывал конференцию Дино Эспозито и на этот доклад я опоздал. Во-первых, с лета мало чего принципиально поменялось в ASP.NET Core и еще тогда Дино четко обозначил свое мнение на три года вперед. Во-вторых, я слежу за .NET Core с пятой беты. Отсутствие SignalR можно пережить, воткнув для соответствующих целей socket.io. А вот EF7 все-еще сыроват.

Ознакомившись с видео-записью, я понял, что ничего не потерял. Стоит отметить, что для тех, кто не следит за развитием .NET Core доклад мог быть полезен, потому что в событиях периода RC1-RC2 действительно можно было потеряться.



Дальше я пошел в четвертый зал, потому что портирование плюсов на C# — задача для меня актуальная. Доклад Егора заставил по настоящему зауважать разработчиков Mono за то, какую не тривиальную работу они проделали, не смотря на то, что традиционно Mono принято ругать и хулить, потому что «там баги» и вообще «все криво» и не тот «level of quality», что в Microsoft. В докладе была затронута тема предотвращения утечек памяти при взаимодействии из C# с плюсовым кодом. Если слайды, начиная с 25го не вызывают у вас вопросов, вы знаете про внутреннее устройство .NET гораздо больше меня. В дискуссионной зоне удалось пообщаться про HoloLens.

Заказывать предварительную версию поиграться – жаба душит, а у Егора девайс есть. Я расспросил о деталях работы с «линзами». Не уверен, будет ли коммерческое применение устройству, кроме как в визуализации интерьеров. Очень бы хотелось, потому что игрушка прикольная.

После перерыва мне пришлось выбирать между akka.net и Stack Overflow. Желание обменяться опытом и расспросить конкретные факты и цифры про akka.net победило и я остался в четвертом зале. В итоге укрепился во мнении, что пора учить F#. Во-первых, функциональная парадигма выглядит лучше для event-driven систем. Во вторых, строки кода – это то, с чем я активно борюсь в последнее время, потому что кода слишком много.

Статистика Вагифа на слайде 83 далеко не в пользу C#. Хорошей новостью для меня стало, что persistent-actors вполне себя работают. Мы с момента беты не рисковали связываться. Уже за рамками доклада в дискуссионной обсудили перспективы akka streams. В России «Аккой» занимается не так много людей, поэтому обмен опытом был крайне полезным. Стоит отдельно отметить, что этот доклад был однозначно самым «творческим». Около трех минут заняло исполнение песни, посвященной акторной системе. По-моему свежо:)

Следующий доклад меня, к сожалению, разочаровал. Показалось, что времени охватить многопоточнось с уровня процессора до .NET Framework, просто не хватило. Информации и цифр было много, но в итоге осталось ощущение недосказанности: что делать с этой информацией, на что обращать внимание, с какими проблемами можно столкнуться в «реальном мире»? Возможно, я просто стал заложником своих ожиданий. Не смотря на общее ощущение понравилась часть, посвященная ключевому слову lock. Деталей реализации (слайд 37), озвученных Гаелем, мне не попадалось на глаза в интернете/литературе. Всегда казалось, что lock просто сразу переходит к шагу 3: «Create kernel event and wait».

Зато доклад Карлена, наоборот, оказался неожиданно ярким. Возможно, этому способствовала особая манера изложения спикера. Я не фанат разглядывания ассемблерных листингов. Здорово, что кто-то может за тебя замерить производительность разных методов .NET и объяснить почему происходит именно так, а не иначе. Принято считать, что виртуальные методы – медленные. Карлен очень доходчиво продемонстрировал, что это не так. Посмотрите слайд №37, спорим, удивитесь! Вообще было много деталей про отличие классов от интерфейсов, реализации дженериков. Информация Карлена крайне полезна разработчикам библиотек.


Дальше – лучше. История о том, как Stack Overflow разрабатывала поиск по тегам – просто шедевр. Удалось осветить в одном докладе темы оптимизации БД, full text search, неожиданные детали GC, особенности параллелизации и работу с CUDA. И все это на реальном примере сайта, которым мы пользуемся чуть ли не ежедневно. Для меня – это, однозначно, лучший доклад на конференции. В слайдах есть ссылки. Информация доклада доступна в блоге Марка Гравелла. Всем, кому нужен поиск в больших БД – абсолютный must read.

К концу конференции я стал уставать от обилия низкоуровневых деталей. Доклад Гольдштейна тоже не оказался простым. Казалось бы SIMD – это больше для геймдева и физики, математики. Но опыт Stack Overflow подсказывал, что может быть по-всякому. В любом случае, просто знание этой информации, может очень сильно помочь в принятии верных технологических решений. Один мой знакомый, занимается робототехникой. Большая часть софта – на плюсах по причинам производительности. Когда они начинали никто всерьез не рассматривал Java или C# в качестве платформы. Раньше я разделял такую точку зрения. Доклады Марко и Саши заставляют задуматься а так ли это на самом деле?

Финальный доклад я тоже почти целиком пропустил, потому что общался с представителями RavenDB. Решил, что нужно обязательно посмотреть запись их спича: судя по всему, ребята проделали большую работу в четвертой версии.

Понравилась идея map/reduce-репликаций в реляционное хранилище. RavenDB 4 еще в альфе, конечно, и в продакшн использовать рано. Но, если все действительно так хорошо, как говорят разработчики, то RavenDB сейчас – одна из наиболее привлекательных БД для рефакторинга legacy .NET-систем на NoSQL-хранилище (там где это действительно нужно, конечно).

Резюме


Описывать стенды спонсоров и обед мне не интересно. Спонсоры – предлагали работать у них или рассказывали о своих продуктах. Обед был без очередей и задержек – все четко.

Так как поездка была рабочей, оцениваю я ее в ценности полученной информации. Не смотря на высокую стоимость участия, думаю, что ездить нужно. В первую очередь, потому что можно задать интересующие тебя вопросы и узнать про самое новое и передовое.

Кстати, в этот раз мне пришла в голову мысль: есть проблема, не с конференцией, а публикой, с сообществом. Некоторые доклады были на столько специфичными, что находилось всего несколько смельчаков с вопросами. У какого числа программистов в России есть доступ к самым новым процессорам и возможность проверить, побенчмаркать разные архитектуры? Вот тупит branch prediction в маленьких циклах на Haswell, а на Ivy Bridge – нет. Кто действительно полезет переписывать алгоритмы, чтобы вставить в них SIMD?

Если лет пять назад я считал, что нет широкого рынка таких задач, то сейчас ситуация меняется. Ежегодный взрывной рост частоты процессоров и наращивание ядер закончились, memory bandwidth никто не отменял, а значит, скоро придется снова оптимизировать алгоритмы и выжимать из железа максимум. А чтобы знать как оптимизировать, учиться нужно уже сейчас.
Tags:
Hubs:
+33
Comments15

Articles