• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
04 net saturday eugene sukhikh ''the basic performance questions''
 

04 net saturday eugene sukhikh ''the basic performance questions''

on

  • 432 views

 

Statistics

Views

Total Views
432
Views on SlideShare
432
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    04 net saturday eugene sukhikh ''the basic performance questions'' 04 net saturday eugene sukhikh ''the basic performance questions'' Presentation Transcript

    • Кто здесь?
      А главное зачем?
    • Повестка дня
      О себе
      Цель доклада
      Поставленные вопросы
      Доклад по циклам
      Доклад по методам сериализации
      Выводы
      Вопросы
    • Сухих Евгений Иванович
      ПроектIntraNote,продуктDocuNote
      Workflowdeveloper
      Любитель поговорить и послушать
      О себе
    • Tips to boost .NET Performance (Цели)
      Поделиться опытом
    • Вопросы
      В нашем проекте довольно таки часто приходится иметь дело с массивами элементов (передача их с сервера на клиент и обратно, прохождение по массиву/коллекции). В связи с этим возникли вопросы выбора оптимального:
      Циклического оператора
      Механизма сериализации
      Много других вопросов…
    • I prefer number!!!
    • Единица измерения скорости
      Я бы выбрал миллисекунды, но и их слишком много
      В качестве временной шкалы выбраны тики
      Только не спрашивайте что такое тики – я не знаю…
    • Приношу извинения за
      [Ctrl + c]
      [Ctrl + v]
    • Циклы - шмиклы
      • for (int x = 1; x <= 5; x++) {… ;}
      • while (y <= 5){... y++;}
      • do {... y++;} while (y <= 5)
      • foreach (int i in array) {…}
      • Рекурсия?
      • Варианты?! …
    • for (int x = 1; x <= 5; x++) {… ;}
    • While /Do … while
    • FOREACH
      vartmp = obj.GetEnumerator();int i;while(tmp.MoveNext()) {    i = tmp.Current;    {...} // your code}
    • Время работы с малыми массивами
      Базовыми было решено использовать массивы небольшого размера.
      20 записей
      50 записей
      100 записей
      Ну и для сравнения массивы побольше:
      10 000
      100 000
    • Примечательно
      Первое обращение для всех циклов существенно дольше последующих.
      ПОЧЕМУ?
      Время выполнения операции в тиках
      Размер массива
    • Ответы
      Я думаю что это из-за первой компиляции класса?!
      А что думаете Вы?
    • Скорость перебора массива Integer на малых размерах
      Время выполнения операции в тиках
      ПОЧЕМУ?
      Размер массива
    • Что видно сгистограммы:
      ForEachи For циклы работают явно быстрее.
      Возможно это связано с типом перебираемых данных.
      Давайте возьмем другие типы данных.
    • String ()
      Время выполнения операции в тиках
      Размер массива
      Выполняется в целом дольше. Почему?
    • Double ()
      Перебор 50-ти элементов длится дольше чем 100
      Время выполнения операции в тиках
      Размер массива
      Мистика !!!
    • Date ()
      Время выполнения операции в тиках
      Размер массива
    • CollectionItem ()
      Время выполнения операции в тиках
      Размер массива
    • CollectionItem ()()
      Время выполнения операции в тиках
      Размер массива
      Время в целом увеличилось
    • CollectionItem ()() ()
      Время выполнения операции в тиках
      Размер массива
    • «For»и «ForEach» быстреечем «Do»и «While»
      Это не открытие Америки, это наглядный материал для тех, кто как и я, не любит читать!!!
      Возникает два вопроса:
      Почему«Do»и «While» медленные
      «For»или «ForEach»
    • While
      Влияют ли по разному записанные условия на результат
      <, <=,
      >, >=
      =
      Давайте попробуем
    • While c разными операторами
      Время выполнения операции в тиках
      ответ: НЕТ!!!
      Размер массива
    • «For»или «ForEach»на небольших массивах
      Время выполнения операции в Тиках
      Размер массива
    • «For»или «ForEach»потеря лидерства
      Время выполнения операции в Тиках
      Размер массива
    • «For»или «ForEach»на больших размерах
      Время выполнения операции в Тиках
      Размер массива
    • Так это бы выглядело в миллисекундах
      Время выполнения операции в Миллисекундах
      Размер массива
    • «For»или «ForEach»Кикбоксер 1
      Время выполнения операции в Тиках
      Размер массива
    • «For»или «ForEach»Матрица часть 2
      Время выполнения операции в Тиках
      Размер массива
    • «For»или «ForEach»Крепкий орешек 3
      Время выполнения операции в Тиках
      Размер массива
    • «For»или «ForEach»Просто Мария
      Время выполнения операции в Тиках
      Размер массива
    • «For»или «ForEach»Санта Барбара
      Время выполнения операции в Тиках
      Размер массива
    • Вывод
      Для перебора элементов небольших массивов целесообразнее использовать ForEach
      Для просмотра больших массивов – For
      Вышеприведенные данные верны только для моей тестовой машины
    • Определение
      Сериализация (в программировании) — процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации — восстановление начального состояния структуры данных из битовой последовательности.
      (с) Википедия
    • Критерии
      Размер данных
      Время сериализации/десериализации
      Читабельность
      Совместимость версий
    • Что пишут другие
    • Разные сериализаторы
      SoapFormatter
      BinaryFormatter
      XmlSerializer
      DataContractSerializer
      NetDataContractSerializer
      LosFormatter
      JsonDataContractSerializer
    • SoapFormatter
      Beginning with the .NET Framework version 3.5, this class is obsolete. Use BinaryFormatter instead.
      Used for Net Remoting
    • BinaryFormatter
    • NetDataContractSerializer
    • DataContractSerializer
    • NetDataContractSerializer
    • LosFormatter
    • DataContractJsonSerializer
    • Скорость
    • Скорость в тиках
      Гребанные тики
      Количество элементов в листе
    • Скорость в миллисекундах
      Миллисекунды
      Количество элементов в листе
    • Размер в килобайтах
      Кб
      Количество элементов в листе
    • Размер в килобайтах
      Кб
      Но что же происходит с увеличением количества элементов в массиве?
      НИЧЕГО!
      Количество элементов в листе
    • LosFormatterвыигрывает и по скорости и по времени
      Вот такой вид имеют сериализованные данные: /wEyigQAAQAAAP////8BAAAAAAAAAAwCAAAAQVRlc3QgbG9vcHMsIFZlcnNpb249MS4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBQEAAAAYdGVzdF9sb29wcy5DMS5Db2xsZWN0aW9uBQAAAAxfRGVzY3JpcHRpb24GT3ZlcmxvDUxpc3RgMStfaXRlbXMMTGlzdGAxK19zaXplD0xpc3RgMStfdmVyc2lvbgECBAAAHnRlc3RfbG9vcHMuQzEuQ29sbGVjdGlvbkl0ZW1bXQIAAAAICAIAAAAKCgkDAAAAAgAAAAIAAAAHAwAAAAABAAAABAAAAAQcdGVzdF9sb29wcy5DMS5Db2xsZWN0aW9uSXRlbQIAAAAJBAAAAAkFAAAADQIFBAAAABx0ZXN0X2xvb3BzLkMxLkNvbGxlY3Rpb25JdGVtBQAAAA1fSW50ZWdlclZhbHVlDF9TdHJpbmdWYWx1ZQ5fRGF0ZVRpbWVWYWx1ZQ1fQm9vbGVhblZhbHVlDF9Eb3VibGVWYWx1ZQABAAAACA0BBgIAAAAoalpVBgYAAAAQMCwxNTkxODcxMTg1OTY5Nag1HJdvMc6IAQAAAAAAAFBAAQUAAAAEAAAAKGpaVQYHAAAAEDAsMTU5MTg3MTE4NTk2OTWoNRyXbzHOiAEAAAAAAABQQAs=
      Я ничего не понял что тут засериализовано, а ВЫ?
    • Что мы выбрали
      NetDataCintractSerializer
    • Sources
      Learn C# Programming Tutorial Lesson 4 – Loops
      How do foreach loops work in C#?
      Сериализация в .NET. Выпрямляем своими руками
      BinaryFormatteralternatives
      BinaryFormatter Class
      Binary & XML
      http://stackoverflow.com/questions/365615/in-net-which-loop-runs-faster-for-or-foreach
    • Чегособственно я хочу от Вас!!!
      Наступать на грабли приятно, но не выгодно – давайте создадим карту граблей
      Если грабли хаотически прыгают по этой карте – давайте научимся их отлавливать в конкретный момент времени
      Давайте грабли поставим в сарай!!!
    • А что дальше
      Давайте встречаться и обсуждать:
      • практические аспекты
      • теоретические подходы
      • методики из реальной жизни
      • алгоритмы в рутинной деятельности
      • да все что угодно – ЭТО НАС РАЗВИВАЕТ
    • Класс и структура
      Давай обсудим?!
    • Спасибо
      Спасибо что пришли
      Спасибо Анне Тупиковой за настойчивость
      Спасибо Татьяне Аксеновой за научную критику
      Спасибо Александру Сухому за полезные советы
      Спасибо всему коллективу за потраченное время
      Окрема подяка за підтримку МегаМозку
    • ВСЕ!