SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Кто здесь? А главное зачем?
Повестка дня О себе Цель доклада Поставленные вопросы Доклад по циклам Доклад по методам сериализации Выводы Вопросы
Сухих Евгений Иванович ПроектIntraNote,продуктDocuNote Workflowdeveloper Любитель поговорить и послушать О себе
Tips to boost .NET Performance (Цели) Поделиться опытом
Вопросы В нашем проекте довольно таки часто приходится иметь дело с массивами элементов (передача их с сервера на клиент и обратно, прохождение по массиву/коллекции). В связи с этим возникли вопросы выбора оптимального: Циклического оператора Механизма сериализации Много других вопросов…
I prefer number!!!
Единица измерения скорости Я бы выбрал миллисекунды, но и их слишком много В качестве временной шкалы выбраны тики Только не спрашивайте что такое тики – я не знаю…
Приношу извинения за  [Ctrl + c]  [Ctrl + v]
Циклы - шмиклы ,[object Object]
while (y <= 5){... y++;}
do {... y++;} while (y <= 5)
foreach (int i in array) {…}
Рекурсия?
Варианты?! …,[object Object]
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
Чегособственно я хочу от Вас!!! Наступать на грабли приятно, но не выгодно – давайте создадим карту граблей Если грабли хаотически прыгают по этой карте – давайте научимся их отлавливать в конкретный момент времени Давайте грабли поставим в сарай!!!

Weitere ähnliche Inhalte

Was ist angesagt?

разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2Eugeniy Tyumentcev
 
Введение в потоки питона
Введение в потоки питонаВведение в потоки питона
Введение в потоки питонаAndrey Niahajchyk
 
Александр Фокин, Рефлексия в C++
Александр Фокин, Рефлексия в C++Александр Фокин, Рефлексия в C++
Александр Фокин, Рефлексия в C++Sergey Platonov
 
Boost.Algorithm: что, зачем и почему
Boost.Algorithm: что, зачем и почемуBoost.Algorithm: что, зачем и почему
Boost.Algorithm: что, зачем и почемуcorehard_by
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?Vasil Remeniuk
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3Eugeniy Tyumentcev
 
Игорь Лабутин «Коллекционируем данные в .NET»
Игорь Лабутин «Коллекционируем данные в .NET»Игорь Лабутин «Коллекционируем данные в .NET»
Игорь Лабутин «Коллекционируем данные в .NET»SpbDotNet Community
 
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Ontico
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETDev2Dev
 
Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Yauheni Akhotnikau
 
Экстремальная оптимизация производительности на примере MongoDB Java Driver
Экстремальная оптимизация производительности на примере MongoDB Java DriverЭкстремальная оптимизация производительности на примере MongoDB Java Driver
Экстремальная оптимизация производительности на примере MongoDB Java DriverVitebsk DSC
 
Скриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОFedor Malyshkin
 
Programming Java - Lection 06 - Multithreading - Lavrentyev Fedor
Programming Java - Lection 06 - Multithreading - Lavrentyev FedorProgramming Java - Lection 06 - Multithreading - Lavrentyev Fedor
Programming Java - Lection 06 - Multithreading - Lavrentyev FedorFedor Lavrentyev
 
Борис Сазонов, RAII потоки и CancellationToken в C++
Борис Сазонов, RAII потоки и CancellationToken в C++Борис Сазонов, RAII потоки и CancellationToken в C++
Борис Сазонов, RAII потоки и CancellationToken в C++Sergey Platonov
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияPlatonov Sergey
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.Igor Shkulipa
 

Was ist angesagt? (19)

разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2разработка серверов и серверных приложений лекция №2
разработка серверов и серверных приложений лекция №2
 
Java threads - part 2
Java threads - part 2Java threads - part 2
Java threads - part 2
 
Введение в потоки питона
Введение в потоки питонаВведение в потоки питона
Введение в потоки питона
 
Python и Cython
Python и CythonPython и Cython
Python и Cython
 
Александр Фокин, Рефлексия в C++
Александр Фокин, Рефлексия в C++Александр Фокин, Рефлексия в C++
Александр Фокин, Рефлексия в C++
 
Boost.Algorithm: что, зачем и почему
Boost.Algorithm: что, зачем и почемуBoost.Algorithm: что, зачем и почему
Boost.Algorithm: что, зачем и почему
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
Игорь Лабутин «Коллекционируем данные в .NET»
Игорь Лабутин «Коллекционируем данные в .NET»Игорь Лабутин «Коллекционируем данные в .NET»
Игорь Лабутин «Коллекционируем данные в .NET»
 
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
 
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NETЧто нам стоит DAL построить? Акуляков Артём D2D Just.NET
Что нам стоит DAL построить? Акуляков Артём D2D Just.NET
 
Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?Для чего мы делали свой акторный фреймворк и что из этого вышло?
Для чего мы делали свой акторный фреймворк и что из этого вышло?
 
Экстремальная оптимизация производительности на примере MongoDB Java Driver
Экстремальная оптимизация производительности на примере MongoDB Java DriverЭкстремальная оптимизация производительности на примере MongoDB Java Driver
Экстремальная оптимизация производительности на примере MongoDB Java Driver
 
Скриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПО
 
Programming Java - Lection 06 - Multithreading - Lavrentyev Fedor
Programming Java - Lection 06 - Multithreading - Lavrentyev FedorProgramming Java - Lection 06 - Multithreading - Lavrentyev Fedor
Programming Java - Lection 06 - Multithreading - Lavrentyev Fedor
 
Борис Сазонов, RAII потоки и CancellationToken в C++
Борис Сазонов, RAII потоки и CancellationToken в C++Борис Сазонов, RAII потоки и CancellationToken в C++
Борис Сазонов, RAII потоки и CancellationToken в C++
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализация
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.
 

Andere mochten auch

Disciplina fiscale degli incentivi sul fotovoltaico 2011
Disciplina fiscale degli incentivi sul fotovoltaico 2011Disciplina fiscale degli incentivi sul fotovoltaico 2011
Disciplina fiscale degli incentivi sul fotovoltaico 2011EnergymasterIt
 
04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''DneprCiklumEvents
 
Power point rosa
Power point rosaPower point rosa
Power point rosaloreana8
 
01 net saturday alex krakovetskiy ''asp.net scaffolding''
01 net saturday alex  krakovetskiy ''asp.net scaffolding''01 net saturday alex  krakovetskiy ''asp.net scaffolding''
01 net saturday alex krakovetskiy ''asp.net scaffolding''DneprCiklumEvents
 
Sergey Khlopenov tools for_development_cross_platform_mobile_ap
Sergey Khlopenov tools for_development_cross_platform_mobile_apSergey Khlopenov tools for_development_cross_platform_mobile_ap
Sergey Khlopenov tools for_development_cross_platform_mobile_apDneprCiklumEvents
 
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''DneprCiklumEvents
 
Vladimir kozhayev handmade isometry
Vladimir kozhayev handmade isometryVladimir kozhayev handmade isometry
Vladimir kozhayev handmade isometryDneprCiklumEvents
 

Andere mochten auch (7)

Disciplina fiscale degli incentivi sul fotovoltaico 2011
Disciplina fiscale degli incentivi sul fotovoltaico 2011Disciplina fiscale degli incentivi sul fotovoltaico 2011
Disciplina fiscale degli incentivi sul fotovoltaico 2011
 
04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''04 net saturday eugene sukhikh ''the basic performance questions''
04 net saturday eugene sukhikh ''the basic performance questions''
 
Power point rosa
Power point rosaPower point rosa
Power point rosa
 
01 net saturday alex krakovetskiy ''asp.net scaffolding''
01 net saturday alex  krakovetskiy ''asp.net scaffolding''01 net saturday alex  krakovetskiy ''asp.net scaffolding''
01 net saturday alex krakovetskiy ''asp.net scaffolding''
 
Sergey Khlopenov tools for_development_cross_platform_mobile_ap
Sergey Khlopenov tools for_development_cross_platform_mobile_apSergey Khlopenov tools for_development_cross_platform_mobile_ap
Sergey Khlopenov tools for_development_cross_platform_mobile_ap
 
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
06 net saturday eugene zharkov ''silverlight. to oob or not to oob''
 
Vladimir kozhayev handmade isometry
Vladimir kozhayev handmade isometryVladimir kozhayev handmade isometry
Vladimir kozhayev handmade isometry
 

Ähnlich wie 04 net saturday eugene sukhikh ''the basic performance questions''

Methods for building dialog agents and the technologies we used
Methods for building dialog agents and the technologies we used Methods for building dialog agents and the technologies we used
Methods for building dialog agents and the technologies we used Grid Dynamics
 
Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Ontico
 
Дмитрий Прокофьев: Эволюция системы синхронизации данных между сервисами
Дмитрий Прокофьев: Эволюция системы синхронизации данных между сервисамиДмитрий Прокофьев: Эволюция системы синхронизации данных между сервисами
Дмитрий Прокофьев: Эволюция системы синхронизации данных между сервисамиit-people
 
Не бойся, это всего лишь данные... просто их много
Не бойся, это всего лишь данные... просто их многоНе бойся, это всего лишь данные... просто их много
Не бойся, это всего лишь данные... просто их многоRoman Dvornov
 
Опыт использования Erlang в разработке многопользовательской игры
Опыт использования Erlang в разработке многопользовательской игрыОпыт использования Erlang в разработке многопользовательской игры
Опыт использования Erlang в разработке многопользовательской игрыYuri Zhloba
 
Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.
Юрий Жлоба -  Опыт использования Erlang в разработке многопользовательской игры.Юрий Жлоба -  Опыт использования Erlang в разработке многопользовательской игры.
Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.IT Share
 
Архитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьАрхитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьAndrey Bibichev
 
Архитектуре проектов на примере интеграции TourIndex, TourDealer
Архитектуре проектов на примере интеграции TourIndex, TourDealerАрхитектуре проектов на примере интеграции TourIndex, TourDealer
Архитектуре проектов на примере интеграции TourIndex, TourDealerVitaly Belenky
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3Computer Science Club
 
разработка бизнес приложений (8)
разработка бизнес приложений (8)разработка бизнес приложений (8)
разработка бизнес приложений (8)Alexander Gornik
 
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Ontico
 
Выявление неполадок в Java приложениях
Выявление неполадок в Java приложенияхВыявление неполадок в Java приложениях
Выявление неполадок в Java приложенияхPavel Grushetzky
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитикиИлья Середа
 
SSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeSSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeAndrey Korshikov
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language RuntimeSQALab
 
Evgeny Rybak Presentation
Evgeny Rybak PresentationEvgeny Rybak Presentation
Evgeny Rybak Presentationsef2009
 
ук 03.003.01 2011
ук 03.003.01 2011ук 03.003.01 2011
ук 03.003.01 2011etyumentcev
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинOntico
 
Python Meetup
Python Meetup Python Meetup
Python Meetup iQSpace
 

Ähnlich wie 04 net saturday eugene sukhikh ''the basic performance questions'' (20)

Methods for building dialog agents and the technologies we used
Methods for building dialog agents and the technologies we used Methods for building dialog agents and the technologies we used
Methods for building dialog agents and the technologies we used
 
Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)
 
Дмитрий Прокофьев: Эволюция системы синхронизации данных между сервисами
Дмитрий Прокофьев: Эволюция системы синхронизации данных между сервисамиДмитрий Прокофьев: Эволюция системы синхронизации данных между сервисами
Дмитрий Прокофьев: Эволюция системы синхронизации данных между сервисами
 
Не бойся, это всего лишь данные... просто их много
Не бойся, это всего лишь данные... просто их многоНе бойся, это всего лишь данные... просто их много
Не бойся, это всего лишь данные... просто их много
 
Опыт использования Erlang в разработке многопользовательской игры
Опыт использования Erlang в разработке многопользовательской игрыОпыт использования Erlang в разработке многопользовательской игры
Опыт использования Erlang в разработке многопользовательской игры
 
Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.
Юрий Жлоба -  Опыт использования Erlang в разработке многопользовательской игры.Юрий Жлоба -  Опыт использования Erlang в разработке многопользовательской игры.
Юрий Жлоба - Опыт использования Erlang в разработке многопользовательской игры.
 
Архитектура в Agile: слабая связность
Архитектура в Agile: слабая связностьАрхитектура в Agile: слабая связность
Архитектура в Agile: слабая связность
 
Архитектуре проектов на примере интеграции TourIndex, TourDealer
Архитектуре проектов на примере интеграции TourIndex, TourDealerАрхитектуре проектов на примере интеграции TourIndex, TourDealer
Архитектуре проектов на примере интеграции TourIndex, TourDealer
 
20111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture320111002 information retrieval raskovalov_lecture3
20111002 information retrieval raskovalov_lecture3
 
разработка бизнес приложений (8)
разработка бизнес приложений (8)разработка бизнес приложений (8)
разработка бизнес приложений (8)
 
запахи кода
запахи кодазапахи кода
запахи кода
 
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
Linux API с точки зрения разработчика веб-сервера / Валентин Бартенев (NGINX,...
 
Выявление неполадок в Java приложениях
Выявление неполадок в Java приложенияхВыявление неполадок в Java приложениях
Выявление неполадок в Java приложениях
 
Построение системы аналитики
Построение системы аналитикиПостроение системы аналитики
Построение системы аналитики
 
SSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular modeSSAS: multidemention vs tabular mode
SSAS: multidemention vs tabular mode
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
Evgeny Rybak Presentation
Evgeny Rybak PresentationEvgeny Rybak Presentation
Evgeny Rybak Presentation
 
ук 03.003.01 2011
ук 03.003.01 2011ук 03.003.01 2011
ук 03.003.01 2011
 
История проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей ШетухинИстория проекта, который никогда не падает / Андрей Шетухин
История проекта, который никогда не падает / Андрей Шетухин
 
Python Meetup
Python Meetup Python Meetup
Python Meetup
 

Mehr von DneprCiklumEvents

Convert estimates to plans (Maxym Mykhalchuk Ciklum)
Convert estimates to plans (Maxym Mykhalchuk Ciklum)Convert estimates to plans (Maxym Mykhalchuk Ciklum)
Convert estimates to plans (Maxym Mykhalchuk Ciklum)DneprCiklumEvents
 
Time management training (Vadim Tikanov Ciklum)
Time management training (Vadim Tikanov Ciklum)Time management training (Vadim Tikanov Ciklum)
Time management training (Vadim Tikanov Ciklum)DneprCiklumEvents
 
Pavel yuriychuk svg in game development
Pavel yuriychuk svg in game developmentPavel yuriychuk svg in game development
Pavel yuriychuk svg in game developmentDneprCiklumEvents
 
Vitaly hit' abc_of_game_development
Vitaly hit' abc_of_game_developmentVitaly hit' abc_of_game_development
Vitaly hit' abc_of_game_developmentDneprCiklumEvents
 
05 net saturday vasiliy borovyak ''.net performance nontrivial bottlenecks''
05 net saturday vasiliy borovyak ''.net performance nontrivial bottlenecks''05 net saturday vasiliy borovyak ''.net performance nontrivial bottlenecks''
05 net saturday vasiliy borovyak ''.net performance nontrivial bottlenecks''DneprCiklumEvents
 
03 net saturday anton samarskyy ''document oriented databases for the .net pl...
03 net saturday anton samarskyy ''document oriented databases for the .net pl...03 net saturday anton samarskyy ''document oriented databases for the .net pl...
03 net saturday anton samarskyy ''document oriented databases for the .net pl...DneprCiklumEvents
 
02 net saturday roman gomolko ''mvvm in javascript using knockoutjs''
02 net saturday roman gomolko ''mvvm in javascript using knockoutjs''02 net saturday roman gomolko ''mvvm in javascript using knockoutjs''
02 net saturday roman gomolko ''mvvm in javascript using knockoutjs''DneprCiklumEvents
 
Segey Glebov tips and tricks for modern mobile project management
Segey Glebov tips and tricks for modern mobile project managementSegey Glebov tips and tricks for modern mobile project management
Segey Glebov tips and tricks for modern mobile project managementDneprCiklumEvents
 
Pavel kravchenko obj c runtime
Pavel kravchenko obj c runtimePavel kravchenko obj c runtime
Pavel kravchenko obj c runtimeDneprCiklumEvents
 
Kirill Zotin клиент серверное взаимодействие под android в деталях
Kirill Zotin клиент серверное взаимодействие под android в деталяхKirill Zotin клиент серверное взаимодействие под android в деталях
Kirill Zotin клиент серверное взаимодействие под android в деталяхDneprCiklumEvents
 
Dmitry pilipenko i os gamekit
Dmitry pilipenko i os gamekitDmitry pilipenko i os gamekit
Dmitry pilipenko i os gamekitDneprCiklumEvents
 

Mehr von DneprCiklumEvents (12)

Convert estimates to plans (Maxym Mykhalchuk Ciklum)
Convert estimates to plans (Maxym Mykhalchuk Ciklum)Convert estimates to plans (Maxym Mykhalchuk Ciklum)
Convert estimates to plans (Maxym Mykhalchuk Ciklum)
 
Time management training (Vadim Tikanov Ciklum)
Time management training (Vadim Tikanov Ciklum)Time management training (Vadim Tikanov Ciklum)
Time management training (Vadim Tikanov Ciklum)
 
Pavel yuriychuk svg in game development
Pavel yuriychuk svg in game developmentPavel yuriychuk svg in game development
Pavel yuriychuk svg in game development
 
Vitaly hit' abc_of_game_development
Vitaly hit' abc_of_game_developmentVitaly hit' abc_of_game_development
Vitaly hit' abc_of_game_development
 
05 net saturday vasiliy borovyak ''.net performance nontrivial bottlenecks''
05 net saturday vasiliy borovyak ''.net performance nontrivial bottlenecks''05 net saturday vasiliy borovyak ''.net performance nontrivial bottlenecks''
05 net saturday vasiliy borovyak ''.net performance nontrivial bottlenecks''
 
03 net saturday anton samarskyy ''document oriented databases for the .net pl...
03 net saturday anton samarskyy ''document oriented databases for the .net pl...03 net saturday anton samarskyy ''document oriented databases for the .net pl...
03 net saturday anton samarskyy ''document oriented databases for the .net pl...
 
02 net saturday roman gomolko ''mvvm in javascript using knockoutjs''
02 net saturday roman gomolko ''mvvm in javascript using knockoutjs''02 net saturday roman gomolko ''mvvm in javascript using knockoutjs''
02 net saturday roman gomolko ''mvvm in javascript using knockoutjs''
 
Taras Kalapun ui testing
Taras Kalapun ui testingTaras Kalapun ui testing
Taras Kalapun ui testing
 
Segey Glebov tips and tricks for modern mobile project management
Segey Glebov tips and tricks for modern mobile project managementSegey Glebov tips and tricks for modern mobile project management
Segey Glebov tips and tricks for modern mobile project management
 
Pavel kravchenko obj c runtime
Pavel kravchenko obj c runtimePavel kravchenko obj c runtime
Pavel kravchenko obj c runtime
 
Kirill Zotin клиент серверное взаимодействие под android в деталях
Kirill Zotin клиент серверное взаимодействие под android в деталяхKirill Zotin клиент серверное взаимодействие под android в деталях
Kirill Zotin клиент серверное взаимодействие под android в деталях
 
Dmitry pilipenko i os gamekit
Dmitry pilipenko i os gamekitDmitry pilipenko i os gamekit
Dmitry pilipenko i os gamekit
 

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

  • 1. Кто здесь? А главное зачем?
  • 2. Повестка дня О себе Цель доклада Поставленные вопросы Доклад по циклам Доклад по методам сериализации Выводы Вопросы
  • 3. Сухих Евгений Иванович ПроектIntraNote,продуктDocuNote Workflowdeveloper Любитель поговорить и послушать О себе
  • 4. Tips to boost .NET Performance (Цели) Поделиться опытом
  • 5. Вопросы В нашем проекте довольно таки часто приходится иметь дело с массивами элементов (передача их с сервера на клиент и обратно, прохождение по массиву/коллекции). В связи с этим возникли вопросы выбора оптимального: Циклического оператора Механизма сериализации Много других вопросов…
  • 7. Единица измерения скорости Я бы выбрал миллисекунды, но и их слишком много В качестве временной шкалы выбраны тики Только не спрашивайте что такое тики – я не знаю…
  • 9.
  • 10. while (y <= 5){... y++;}
  • 11. do {... y++;} while (y <= 5)
  • 12. foreach (int i in array) {…}
  • 14.
  • 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. Критерии Размер данных Время сериализации/десериализации Читабельность Совместимость версий
  • 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
  • 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.
  • 64. алгоритмы в рутинной деятельности
  • 65.
  • 66. Спасибо Спасибо что пришли Спасибо Анне Тупиковой за настойчивость Спасибо Татьяне Аксеновой за научную критику Спасибо Александру Сухому за полезные советы Спасибо всему коллективу за потраченное время Окрема подяка за підтримку МегаМозку