- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

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

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

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

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

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

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

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

DotNext — Moscow 2016. Как это было - 6Зато доклад Карлена [13], наоборот, оказался неожиданно ярким. Возможно, этому способствовала манера изложения спикера, которая мне очень понравилась. Я не фанат разглядывания ассемблерных листингов. Здорово, что кто-то может за тебя замерить производительность разных методов .NET и объяснить почему происходит именно так, а не иначе. Принято считать, что виртуальные методы – медленные. Карлен очень доходчиво продемонстрировал, что это не так. Посмотрите слайд 37 [14], спорим, удивитесь. Вообще было много деталей про отличие классов от интерфейсов, реализации дженериков. Информация очень полезна для разработчиков библиотек.

DotNext — Moscow 2016. Как это было - 7Дальше – лучше. История о том, как Stack Overflow разрабатывала поиск по тегам [15] – просто шедевр. Удалось осветить в одном докладе темы оптимизации БД, full text search, неожиданные детали GC, особенности параллелизации и работу с CUDA. И все это на реальном примере сайта, которым мы пользуемся чуть ли не ежедневно. Для меня – это, однозначно, лучший доклад на прошедшем «Дотнексте». В слайдах [16] есть ссылки. Информация доклада описана так-же в интернете. Всем, кому нужен поиск в больших БД – абсолютный must read.

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

DotNext — Moscow 2016. Как это было - 9Финальный доклад [17] я тоже почти целиком пропустил, потому что общался с представителями RavenDB. Решил, что нужно обязательно посмотреть запись их доклада: судя по всему, ребята проделали большую работу в четвертой версии.

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

Резюме

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

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

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

Если лет 5 назад я считал, что нет широкого рынка таких задач, то сейчас ситуация меняется. Не видим мы взрывной рост частоты процессоров и наращивание ядер, а значит, скоро придется снова оптимизировать алгоритмы. А знать как оптимизировать нужно уще сейчас.

Автор: marshinov

Источник [18]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/c-2/220818

Ссылки в тексте:

[1] Питере: http://2016.dotnext-piter.ru/

[2] C++ через C#: http://dotnext-moscow.ru/talks/c-via-c/

[3] Моя жизнь с актерами: http://dotnext-moscow.ru/talks/my-life-with-actors-implementing-actor-model-in-f/

[4] Squeezing the Hardware to Make Performance Juice: http://dotnext-moscow.ru/talks/squeezing-the-hardware-to-make-performance-juice/

[5] сотрудника Stack Overflow: http://dotnext-moscow.ru/talks/stack-overflow-its-all-about-performance-marco-cecconi/

[6] socket.io: http://socket.io/

[7] начиная с 25го: http://assets.contentful.com/9n3x4rtjlya6/Ou1cw3lWiQAMUWC2okuuQ/e864c4470588d82c87381b62fc8c82a5/Egor_Bogatov_C___via_C_.pdf

[8] слайде 83: http://assets.contentful.com/9n3x4rtjlya6/1LDjSOAHI8QIKq6UeqKoy4/e18ae1bb769d85f7130c7d4e88115bc8/Vagif_Abilov_My_Life_With_Actors-2.pdf

[9] persistent-actors: http://getakka.net/docs/persistence/persistent-actors

[10] akka streams: http://getakka.net/docs/streams/introduction

[11] Следующий доклад: http://dotnext-moscow.ru/talks/multithreading-deep-dive/

[12] Деталей реализации (слайд 37): http://assets.contentful.com/9n3x4rtjlya6/6gEup82R0IIKKogEoQuQoA/bfa779a06153ef21371fd976ac912f25/Multithreading_Fundamentals_-_Moscow_2016-2.pdf

[13] доклад Карлена: http://dotnext-moscow.ru/talks/end-to-end-jit/

[14] Посмотрите слайд 37: http://assets.contentful.com/9n3x4rtjlya6/5vGq5LOPBu2kq8WuSUQssw/5edc1c830040f00960434a655f0845f7/Karlen_Simonyan_End_to_End_JIT.pdf

[15] как Stack Overflow разрабатывала поиск по тегам: http://dotnext-moscow.ru/talks/performance-tuning-stack-overflow-tags/

[16] В слайдах: http://assets.contentful.com/9n3x4rtjlya6/3C4EiDWSNG4I4U4Gy0GQ8q/b80b457ff04e45f044615600f78d7cd7/Marco_Cecconi_a_______Performance_tuning_Stack_Overflow_tags.pdf

[17] Финальный доклад: http://dotnext-moscow.ru/talks/whats-new-in-c-7/

[18] Источник: https://habrahabr.ru/post/317620/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best