Как стать автором
Обновить
0
Семинары Станислава Сидристого
CLRium #7: Parallel Computing Practice

Семинар по анатомии CLR и .Net Framework. Roslyn, CoreCLR, CoreFx, Nitra, RyuJIT

Время на прочтение 4 мин
Количество просмотров 4.4K

03-04 Апреля в Москве и 29-30 мая — в Санкт-Петербурге пройдет серия семинаров CLRium. У данного семинара нет определенной целевой аудитории, мы рады всем. И начинающим свою карьеру, разработчикам, и махровым, повидавшим виды, архитекторам.

Как люди и хотят, у нас будут не просто технические доклады, без воды и маркетинга. У нас будет много тем, одна из которых — настоящая разминка для мозгов. Мы будем по дампам памяти понимать как устроена CLR и как с ней взаимодействовать не привычным для всех способом — напрямую.

У нас будет:
  • Максимально глубокие, отборные доклады по редко-раскрываемым вопросам
  • Целый вечер, посвященный исключительно ядру .Net. Как с ним работать «без перчаток», напрямую, со структурами в памяти, без рефлексии.


Чем мы гордимся:
  • Наш материал не встретишь в сети Интернет: он полностью авторский
  • Материал освещает самые интересные области .Net, которые почему-то не покрыты материалом.
  • Мы не берем лишних денег с вас и потому у нас — самая дешевая конференция и всех существующих. 2,000 рублей за два дня — такого не предлагает никто. Это ведь как в магазин сходить.


Анатомия CLR

В данном вопросе я варюсь уже около года и достаточно плотно изучил как устроен CLR в качестве структур данных чтобы рассказать вам о них максимально подробно. Интерес к данному мероприятию должен возникнуть как минимум потому что эта тема практически не освещена в Интернете и знания, которые вы получите, помогут Вам взглянуть на платформу под совершенно новым углом. Также данный раздел знаний по CLR является чрезвычайно интересным. Microsoft с каждым днем давит на нас словом «безопасность». А так ли она безопасна, эта CLR? А так ли много там «магии», позволяющей нам не думать о безопасности? Это авторский проект и является результатом исследований с отладчиком: каково строение.Net объектов в памяти и что с этим можно сделать.
  • Во-первых мы посмотрим на реальное строение объектов в памяти
  • Во-вторых мы исследуем структуры данных в памяти, относящиеся к построению виртуальных методов, реализации интерфейсов и классов (этого не было на CLRium #1)
  • Далее, на основе полученных данных мы построим прокси-тип в памяти
  • И исследуем возможность сделать множественное наследование в .Net
  • Также попробуем совместить в одном объекте и Java и .Net объект, запустив одновременно оба рантайма (привет, Xamarin)
  • После чего, воспользовавшись полученным опытом расшарим объект .Net между процессами так чтобы он одновременно существовал бы в обоих мирах.
  • Полученные знания мы используем для ответа на вопрос: какие стандартные конструкции языка приводят к проседанию производительности и каким образом?
  • Подключим компилятор и сделаем собственный JIT с блекджеком .


CoreCLR

В этой теме мы во всех подробностях раскроем возможности, которые встают перед вами при использовании открытого ядра .Net
  • Рассмотрим архитектуру CLR, доступную нам по исходным кодам
  • Построим первое приложение, рассчитанное на кроссплатформенность и работающее на нашем собственном ядре
  • Встроим в ядро метрики призводительности ядра, которые будет считывать само приложение
  • Запустим ASP.NET приложение на ядре CoreCLR
  • [сетка формируется]

Roslyn:

  • Мы не будем делать вводную: в интернете все доклады – это вводные и вы их видели
  • Мы разберем от простого к сложному, как устроены существующие правила в поставке Roslyn (C# 6 features). Но рассмотрим не список, как это делают на конференциях, а их исходный код
  • Как только мы их рассмотрим, мы рассмотрим существующие метрики на Roslyn. Как они написаны, как строятся метрики кода.
  • Далее мы напишем не просто «подсчитаем количество букв «а» во всех словах исходных текстов, мы напишем поддержку кортежей для C#:
    var (x,y) = CalcCoords();
    	public (int,int) CalcCoords()
    	{
    	   return (0,0);
    	}
    
  • И сделаем Nemerle оператор match
        match (i)
        {
          | 1 => Console.WriteLine(1)
          | 2 => Console.WriteLine(2)
          | x => Console.WriteLine(x)
        }
        match (i)
        {
           | x when (x < 0)  => WriteLine("negative")
           | x when (x > 36) => WriteLine("more than 36")
           | x when (x % 2 == 0)=> WriteLine($"valid even number $x")
           | x                  => WriteLine($"valid odd number $x")
        }
        
        match (obj)
        {
          | iDisp is IDisposable => iDisp.Dispose()
          | _ => (); 
        }
    
  • ​​Это очень сложные примеры, которые так просто не напишешь за вечерок и это то, что вы хотите найти в сети Интернет, но не можете.



RyuJIT

  • Мы опишем что нам даст его использование
  • Попробуем запустить на нем проект и померить производительность приложения с ним и без него на наборе синтетических тестов
  • Рассмотрим сценарии, когда бы его открытость, которая близится с каждым днем, дала бы нам преимущества


CoreFx

Многие говорят что открытость.Net Framework для сообщества и предоставление сообществу возможностей для свободного внесения правок — это плохо и черевато бесконечными багами, небрежным кодом и не стабильным API. Так ли это?
  • Итоги полугода открытого.Net Framework CoreFx.
  • Возросшая производительность от 10х до 1000х кратной в некоторых местах
  • Закрытые баги
  • Соотношение кода сообщества к коду команды.Net Framework
  • Попробуем скомпилировать и разобрать по косточкам приложение, написанное под CoreFx


Что-то пропустили?

Если по-вашему мы что-то пропустили, пишите в комментах, о чем еще рассказать =)

Почитать и зарегистрироваться




Контакты:
Теги:
Хабы:
+15
Комментарии 6
Комментарии Комментарии 6

Публикации

Информация

Сайт
clrium.ru
Дата регистрации
Дата основания
Численность
1 человек (только я)
Местоположение
Россия
Представитель
Stanislav Sidristij

Истории