2. Повестка дня О себе Цель доклада Поставленные вопросы Доклад по циклам Доклад по методам сериализации Выводы Вопросы
3. Сухих Евгений Иванович ПроектIntraNote,продуктDocuNote Workflowdeveloper Любитель поговорить и послушать О себе
4. Tips to boost .NET Performance (Цели) Поделиться опытом
5. Вопросы В нашем проекте довольно таки часто приходится иметь дело с массивами элементов (передача их с сервера на клиент и обратно, прохождение по массиву/коллекции). В связи с этим возникли вопросы выбора оптимального: Циклического оператора Механизма сериализации Много других вопросов…
7. Единица измерения скорости Я бы выбрал миллисекунды, но и их слишком много В качестве временной шкалы выбраны тики Только не спрашивайте что такое тики – я не знаю…
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 () Время выполнения операции в тиках Размер массива
28. «For»и «ForEach» быстреечем «Do»и «While» Это не открытие Америки, это наглядный материал для тех, кто как и я, не любит читать!!! Возникает два вопроса: Почему«Do»и «While» медленные «For»или «ForEach»
29. While Влияют ли по разному записанные условия на результат <, <=, >, >= = Давайте попробуем
30. While c разными операторами Время выполнения операции в тиках ответ: НЕТ!!! Размер массива
40. Вывод Для перебора элементов небольших массивов целесообразнее использовать ForEach Для просмотра больших массивов – For Вышеприведенные данные верны только для моей тестовой машины
41. Определение Сериализация (в программировании) — процесс перевода какой-либо структуры данных в последовательность битов. Обратной к операции сериализации является операция десериализации — восстановление начального состояния структуры данных из битовой последовательности. (с) Википедия
42. Критерии Размер данных Время сериализации/десериализации Читабельность Совместимость версий
56. Размер в килобайтах Кб Но что же происходит с увеличением количества элементов в массиве? НИЧЕГО! Количество элементов в листе
57. LosFormatterвыигрывает и по скорости и по времени Вот такой вид имеют сериализованные данные: /wEyigQAAQAAAP////8BAAAAAAAAAAwCAAAAQVRlc3QgbG9vcHMsIFZlcnNpb249MS4wLjAuMCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1udWxsBQEAAAAYdGVzdF9sb29wcy5DMS5Db2xsZWN0aW9uBQAAAAxfRGVzY3JpcHRpb24GT3ZlcmxvDUxpc3RgMStfaXRlbXMMTGlzdGAxK19zaXplD0xpc3RgMStfdmVyc2lvbgECBAAAHnRlc3RfbG9vcHMuQzEuQ29sbGVjdGlvbkl0ZW1bXQIAAAAICAIAAAAKCgkDAAAAAgAAAAIAAAAHAwAAAAABAAAABAAAAAQcdGVzdF9sb29wcy5DMS5Db2xsZWN0aW9uSXRlbQIAAAAJBAAAAAkFAAAADQIFBAAAABx0ZXN0X2xvb3BzLkMxLkNvbGxlY3Rpb25JdGVtBQAAAA1fSW50ZWdlclZhbHVlDF9TdHJpbmdWYWx1ZQ5fRGF0ZVRpbWVWYWx1ZQ1fQm9vbGVhblZhbHVlDF9Eb3VibGVWYWx1ZQABAAAACA0BBgIAAAAoalpVBgYAAAAQMCwxNTkxODcxMTg1OTY5Nag1HJdvMc6IAQAAAAAAAFBAAQUAAAAEAAAAKGpaVQYHAAAAEDAsMTU5MTg3MTE4NTk2OTWoNRyXbzHOiAEAAAAAAABQQAs= Я ничего не понял что тут засериализовано, а ВЫ?
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. Чегособственно я хочу от Вас!!! Наступать на грабли приятно, но не выгодно – давайте создадим карту граблей Если грабли хаотически прыгают по этой карте – давайте научимся их отлавливать в конкретный момент времени Давайте грабли поставим в сарай!!!
66. Спасибо Спасибо что пришли Спасибо Анне Тупиковой за настойчивость Спасибо Татьяне Аксеновой за научную критику Спасибо Александру Сухому за полезные советы Спасибо всему коллективу за потраченное время Окрема подяка за підтримку МегаМозку