Your SlideShare is downloading. ×
04 net saturday eugene sukhikh ''the basic performance questions''
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

317

Published on

Published in: Design
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
317
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Кто здесь?
    А главное зачем?
  • 2. Повестка дня
    О себе
    Цель доклада
    Поставленные вопросы
    Доклад по циклам
    Доклад по методам сериализации
    Выводы
    Вопросы
  • 3. Сухих Евгений Иванович
    ПроектIntraNote,продуктDocuNote
    Workflowdeveloper
    Любитель поговорить и послушать
    О себе
  • 4. Tips to boost .NET Performance (Цели)
    Поделиться опытом
  • 5. Вопросы
    В нашем проекте довольно таки часто приходится иметь дело с массивами элементов (передача их с сервера на клиент и обратно, прохождение по массиву/коллекции). В связи с этим возникли вопросы выбора оптимального:
    Циклического оператора
    Механизма сериализации
    Много других вопросов…
  • 6. I prefer number!!!
  • 7. Единица измерения скорости
    Я бы выбрал миллисекунды, но и их слишком много
    В качестве временной шкалы выбраны тики
    Только не спрашивайте что такое тики – я не знаю…
  • 8. Приношу извинения за
    [Ctrl + c]
    [Ctrl + v]
  • 9. Циклы - шмиклы
    • for (int x = 1; x <= 5; x++) {… ;}
    • 10. while (y <= 5){... y++;}
    • 11. do {... y++;} while (y <= 5)
    • 12. foreach (int i in array) {…}
    • 13. Рекурсия?
    • 14. Варианты?! …
  • for (int x = 1; x <= 5; x++) {… ;}
  • 15. While /Do … while
  • 16. FOREACH
    vartmp = obj.GetEnumerator();int i;while(tmp.MoveNext()) {    i = tmp.Current;    {...} // your code}
  • 17. Время работы с малыми массивами
    Базовыми было решено использовать массивы небольшого размера.
    20 записей
    50 записей
    100 записей
    Ну и для сравнения массивы побольше:
    10 000
    100 000
  • 18. Примечательно
    Первое обращение для всех циклов существенно дольше последующих.
    ПОЧЕМУ?
    Время выполнения операции в тиках
    Размер массива
  • 19. Ответы
    Я думаю что это из-за первой компиляции класса?!
    А что думаете Вы?
  • 20. Скорость перебора массива Integer на малых размерах
    Время выполнения операции в тиках
    ПОЧЕМУ?
    Размер массива
  • 21. Что видно сгистограммы:
    ForEachи For циклы работают явно быстрее.
    Возможно это связано с типом перебираемых данных.
    Давайте возьмем другие типы данных.
  • 22. String ()
    Время выполнения операции в тиках
    Размер массива
    Выполняется в целом дольше. Почему?
  • 23. Double ()
    Перебор 50-ти элементов длится дольше чем 100
    Время выполнения операции в тиках
    Размер массива
    Мистика !!!
  • 24. Date ()
    Время выполнения операции в тиках
    Размер массива
  • 25. CollectionItem ()
    Время выполнения операции в тиках
    Размер массива
  • 26. CollectionItem ()()
    Время выполнения операции в тиках
    Размер массива
    Время в целом увеличилось
  • 27. CollectionItem ()() ()
    Время выполнения операции в тиках
    Размер массива
  • 28. «For»и «ForEach» быстреечем «Do»и «While»
    Это не открытие Америки, это наглядный материал для тех, кто как и я, не любит читать!!!
    Возникает два вопроса:
    Почему«Do»и «While» медленные
    «For»или «ForEach»
  • 29. While
    Влияют ли по разному записанные условия на результат
    <, <=,
    >, >=
    =
    Давайте попробуем
  • 30. While c разными операторами
    Время выполнения операции в тиках
    ответ: НЕТ!!!
    Размер массива
  • 31. «For»или «ForEach»на небольших массивах
    Время выполнения операции в Тиках
    Размер массива
  • 32. «For»или «ForEach»потеря лидерства
    Время выполнения операции в Тиках
    Размер массива
  • 33. «For»или «ForEach»на больших размерах
    Время выполнения операции в Тиках
    Размер массива
  • 34. Так это бы выглядело в миллисекундах
    Время выполнения операции в Миллисекундах
    Размер массива
  • 35. «For»или «ForEach»Кикбоксер 1
    Время выполнения операции в Тиках
    Размер массива
  • 36. «For»или «ForEach»Матрица часть 2
    Время выполнения операции в Тиках
    Размер массива
  • 37. «For»или «ForEach»Крепкий орешек 3
    Время выполнения операции в Тиках
    Размер массива
  • 38. «For»или «ForEach»Просто Мария
    Время выполнения операции в Тиках
    Размер массива
  • 39. «For»или «ForEach»Санта Барбара
    Время выполнения операции в Тиках
    Размер массива
  • 40. Вывод
    Для перебора элементов небольших массивов целесообразнее использовать ForEach
    Для просмотра больших массивов – For
    Вышеприведенные данные верны только для моей тестовой машины
  • 41. Определение
    Сериализация (в программировании) — процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации — восстановление начального состояния структуры данных из битовой последовательности.
    (с) Википедия
  • 42. Критерии
    Размер данных
    Время сериализации/десериализации
    Читабельность
    Совместимость версий
  • 43. Что пишут другие
  • 44. Разные сериализаторы
    SoapFormatter
    BinaryFormatter
    XmlSerializer
    DataContractSerializer
    NetDataContractSerializer
    LosFormatter
    JsonDataContractSerializer
  • 45. SoapFormatter
    Beginning with the .NET Framework version 3.5, this class is obsolete. Use BinaryFormatter instead.
    Used for Net Remoting
  • 46. BinaryFormatter
  • 47. NetDataContractSerializer
  • 48. DataContractSerializer
  • 49. NetDataContractSerializer
  • 50. LosFormatter
  • 51. DataContractJsonSerializer
  • 52. Скорость
  • 53. Скорость в тиках
    Гребанные тики
    Количество элементов в листе
  • 54. Скорость в миллисекундах
    Миллисекунды
    Количество элементов в листе
  • 55. Размер в килобайтах
    Кб
    Количество элементов в листе
  • 56. Размер в килобайтах
    Кб
    Но что же происходит с увеличением количества элементов в массиве?
    НИЧЕГО!
    Количество элементов в листе
  • 57. LosFormatterвыигрывает и по скорости и по времени
    Вот такой вид имеют сериализованные данные: /wEyigQAAQAAAP////8BAAAAAAAAAAwCAAAAQVRlc3QgbG9vcHMsIFZlcnNpb249MS4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBQEAAAAYdGVzdF9sb29wcy5DMS5Db2xsZWN0aW9uBQAAAAxfRGVzY3JpcHRpb24GT3ZlcmxvDUxpc3RgMStfaXRlbXMMTGlzdGAxK19zaXplD0xpc3RgMStfdmVyc2lvbgECBAAAHnRlc3RfbG9vcHMuQzEuQ29sbGVjdGlvbkl0ZW1bXQIAAAAICAIAAAAKCgkDAAAAAgAAAAIAAAAHAwAAAAABAAAABAAAAAQcdGVzdF9sb29wcy5DMS5Db2xsZWN0aW9uSXRlbQIAAAAJBAAAAAkFAAAADQIFBAAAABx0ZXN0X2xvb3BzLkMxLkNvbGxlY3Rpb25JdGVtBQAAAA1fSW50ZWdlclZhbHVlDF9TdHJpbmdWYWx1ZQ5fRGF0ZVRpbWVWYWx1ZQ1fQm9vbGVhblZhbHVlDF9Eb3VibGVWYWx1ZQABAAAACA0BBgIAAAAoalpVBgYAAAAQMCwxNTkxODcxMTg1OTY5Nag1HJdvMc6IAQAAAAAAAFBAAQUAAAAEAAAAKGpaVQYHAAAAEDAsMTU5MTg3MTE4NTk2OTWoNRyXbzHOiAEAAAAAAABQQAs=
    Я ничего не понял что тут засериализовано, а ВЫ?
  • 58. Что мы выбрали
    NetDataCintractSerializer
  • 59. 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
  • 60. Чегособственно я хочу от Вас!!!
    Наступать на грабли приятно, но не выгодно – давайте создадим карту граблей
    Если грабли хаотически прыгают по этой карте – давайте научимся их отлавливать в конкретный момент времени
    Давайте грабли поставим в сарай!!!
  • 61. А что дальше
    Давайте встречаться и обсуждать:
    • практические аспекты
    • 62. теоретические подходы
    • 63. методики из реальной жизни
    • 64. алгоритмы в рутинной деятельности
    • 65. да все что угодно – ЭТО НАС РАЗВИВАЕТ
  • Класс и структура
    Давай обсудим?!
  • 66. Спасибо
    Спасибо что пришли
    Спасибо Анне Тупиковой за настойчивость
    Спасибо Татьяне Аксеновой за научную критику
    Спасибо Александру Сухому за полезные советы
    Спасибо всему коллективу за потраченное время
    Окрема подяка за підтримку МегаМозку
  • 67. ВСЕ!

×