DevCon12 // msdevcon.ru #msdevcon 23-24 мая, 2012 г. Microsoft.

Презентация:



Advertisements
Похожие презентации
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or.
Advertisements

© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or.
Windows ® Azure Platform. Управление пользователями и ролями Управление правилами брандмауэра Содержание.
DevCon12 // msdevcon.ru #msdevcon May 23-24, 2012 Microsoft.
DevCon12 // msdevcon.ru #msdevcon мая, 2012 г. Microsoft.
Windows ® Azure Platform. Создание сервера SQL Azure Создание базы данных Создание правил брандмауэра Управление базой данных Содержание.
Windows ® Azure Platform. Обзор возможностей ДEМО: Получение информации и управление приложением в «облаке» Содержание.
24%24% 71%71% Silverlight ?????? infoinfo Браузер somedomain.com.
Занятие 2 Инструменты Роман Здебский Тренинг Введение в разработку приложений на Windows Presentation.
Новый цикл разработки Интерфейс для создания Silverlight приложений.
Как продвигается тестирование? Как происходит сборка? Мы устраняем дефекты? На сколько качественно мы чиним дефекты? Мы готовы к выпуску?
Microsoft TechDays Илья Рудь MCT ЦКО «Специалист»
Разработка приложений – делаем лучше Windows Phone 7 Day.
Разработка приложений – делаем лучше Владимир Колесников Windows Phone 7 Camp.
Microsoft TechDays Роман Здебский Эксперт по технологиям разработки ПО Microsoft
Microsoft TechDays Владимир Безмалый MVP Consumer Security Microsoft Security Trusted Adviser.
Тестирование программного обеспечения в Visual Studio Alexander Yakovlev
Microsoft TechDays Роман Здебский Эксперт по технологиям разработки ПО Microsoft
DevCon12 // msdevcon.ru #msdevcon мая, 2012 г. Microsoft.
Microsoft TechDays Евгений Марченков Эксперт по технологиям разработки ПО.
Транксрипт:

DevCon12 // msdevcon.ru #msdevcon мая, 2012 г. Microsoft

// DevCon12 Повышаем производительность Windows Phone приложений АЛЕКСАНДР | wp7rocks.com | msug.vn.ua | devrain.com Руководитель DevRain Solutions Microsoft MVP, Regional Director, PhD.

содержание доклада Работа с XAML и элементами управления. Работа с изображениями. Оптимизация времени старта приложений и работа с памятью. Оптимизация для платформы с 256 Мб памяти. Инструменты профилирования и счетчики.

#msdevcon Часть 1 Работа с XAML и элементами управления

Потоковая модель OS Operating system compositing and overlays Compositor Smooth animations for bitmap cached elements Touch Touch responsiveness thread Data binding. Rasterizing. Events. Very busy! UI App parsing logic, long-running tasks, etc. Background Threads

XAML Используйте как можно более простой XAML код. Сведите к минимуму использование Converters, особенно в связке со сценариями data binding. Избегайте цветовые анимации, а также элемента управления Popup (загружается в основном потоке). Создание элементов управления в коде быстрее чем XAML + data binding. Освободите UI поток от дополнительной работы!!!

Pivot или Panorama? У Pivot загружается три панели – предыдущая, текущая и следующая. Panorama загружает все панели и весь контент одновременно. US/education/quickstarts/Pa norama_and_Pivot_Controls

Избегайте Callbacks Callbacks у этих классов выполняются в основном потоке: GeoCoordinateWatcher BackgroundWorker WebClient (7.0) Детали: natewatcher-tips-part1.aspx natewatcher-tips-part1.aspx

WebClient var client = new WebClient(); client.DownloadStringCompleted += (sender, e) => { }; client.DownloadStringAsync(new Uri(url)) WebClientSampleText.Text = e.Result; UI thread background thread Детальнее на: rf/archive/2011/06/21/webclient -change-for-mango-how-it- impacts-your-application.aspx

HttpWebRequest var request = (HttpWebRequest)WebRequest.Create(new Uri(url)); request.BeginGetResponse(r => { var httpRequest = (HttpWebRequest)r.AsyncState; var httpResponse = (HttpWebResponse)httpRequest.EndGetResponse(r); using (var reader = new StreamReader(httpResponse.GetResponseStream())) { var response = reader.ReadToEnd(); Deployment.Current.Dispatcher.BeginInvoke(new Action(() => { responseTextBlock.Text = response; })); } }, request);

ListView и «ленивая» загрузка Процесс прокрутки включает: разбор (парсинг) XAML; генерация объектов; загрузка и декодирование изображений.

ListView и «ленивая» загрузка Что делать: использовать StackPanel если список небольшой; использовать LongListSelector; использовать задержку во время прокрутки; использовать сторонние компоненты: Lazy List, DeferredLoadListBox, Telerik Rad Controls: RadListBoxLazy List DeferredLoadListBoxTelerik Rad Controls: RadListBox

Opacity и Visibility При любом изменении значения Visible Silverlight перерисует страницу полностью. Если установить Opacity равным 0 при включенном битмап кэшировании CacheMode = Media.BitmapCache, то Silverlight закэширует элемент управления.

Progress bar Стандартный ProgressBar имеет проблемы с производительностью ( Используйте PerformanceProgressBar (автор - Jeff Wilcox) вместо стандартного. В данный момент входит в Silverlight Toolkit for Windows Phone ( Также в Mango появился SystemTray.ProgressBar.

SystemTray.ProgressBar ProgressIndicator pi = Microsoft.Phone.Shell.SystemTray.ProgressIndicator; pi.IsVisible = true;

Ограничения на размер контролов Элементы управления должны быть не больше чем 2048х2048 пикселей. ScrollableTextBox textblock-windows-phone-7.html textblock-windows-phone-7.html

Эмулятор vs. устройство

Сериализация и десериализация Сравнение: DataContractJSONSerializer JSON.NET XmlSerlializer Binary serialization

Сериализация и десериализация Вывод: бинарная сериализация самая быстрая.

#msdevcon Часть 2 Работа с изображениями

Стартовый экран Если приложение загружается больше 1 секунды, то показывается splash экран (jpeg 480 x 800px). Не поддерживает анимацию Создание анимированного экрана

Content vs. Resource // Content: // Resource:

Content vs. Resource Content изображения добавляются в *.xap как обыкновенные файлы. Resource файлы встраиваются непосредственно в библиотеку (*.dll). Выводы: используйте изображения как Content для оптимизации времени старта приложения, используйте Resource для быстрого доступа изображений после инициализации приложения.

Общие рекомендации JPEG декодер работает быстрее чем PNG декодер. Используйте CreateOptions = BackgroundCreation для загрузки изображений в фоновом потоке. Максимальный размер изображений: 2000х2000px.

Кэширование и дэкодирование // remove caching by code var bitmapImage = image.Source as BitmapImage; bitmapImage.UriSource = null; image.Source = null; // decoding to lower resolution image.Source = PictureDecoder.DecodeJpeg(jpgStream, 192, 256);

var uri = new Uri("LoadingLargeImages;component/Test3k3k.JPG", UriKind.Relative); var sri = Application.GetResourceStream(uri); var wb = new WriteableBitmap((int)this.image3k3k.Width, (int)this.image3k3k.Height); wb.LoadJpeg(sri.Stream); this.image3k3k.Source = wb; Работа с большими изображениями Класс WriteableBitmap и метод LoadJpeg

#msdevcon Часть 3 Оптимизация времени старта приложений и работы с памятью

Локализация, отдельные сборки Если вы хотите локализировать приложение, то не включайте все языковые ресурсы в одну сборку. Лучше разбейте их на отдельные библиотеки. Как создавать локализированные приложения: Пример загрузки страницы из другой библиотеки: NavigationService.Navigate( new Uri("/ExternalAssembly;component/Page.xaml", UriKind.Relative) );

динамическая загрузка библиотек Динамическая загрузка DataGrid если элемент управления не используется при старте; DataGrid не является стандартным элементом управления; 144KB экономии при старте. Асинхронная загрузка S.W.Controls.Data.Dll Загружаем dll Создаем контрол в отдельном методе (CLR not to JIT inline)

#msdevcon Часть 4 Оптимизация для платформы с 256 МБ

public static class LowMemoryHelper { public static bool IsLowMemDevice { get; set; } static LowMemoryHelper() { try { Int64 result = (Int64)DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit"); IsLowMemDevice = result < L; } catch (ArgumentOutOfRangeException) { // Windows Phone OS update not installed, which indicates a 512-MB device. IsLowMemDevice = false; } Windows Phone SDK и Tango Проверка Tango устройства

Ограничения Tango Не поддерживается: управление подписками на подкасты и их просмотр; Bing Local Scout; автоматическая загрузка фото в SkyDrive, но это можно будет сделать вручную; воспроизведение некоторых HD видеороликов из-за отсутствия соответствующих кодеков + ограничения на битрейт; фоновые агенты (Background agents).

Bing Maps Способ оптимизации

var bingMapsTask = new BingMapsTask(); // Omit the Center property to use the user's current location. // bingMapsTask.Center = new GeoCoordinate( , ); bingMapsTask.ZoomLevel = 2; bingMapsTask.Show(); var webBrowserTask = new WebBrowserTask(); webBrowserTask.Uri = new Uri(" UriKind.Absolute); webBrowserTask.Show(); Tasks Используйте BingMapsTask и WebBrowserTask

RootFrame = new TransitionFrame(); … Page transitions ~12 МБ, ~17 МБ (пик)

RootFrame = new PhoneApplicationFrame(); if (LowMemoryHelper.IsLowMemDevice) { RootFrame = new PhoneApplicationFrame(); } else { RootFrame = new TransitionFrame(); } Page transitions ~6 МБ, ~9 МБ (пик)

А также… …обязательно используйте Memory Profiler. …подумайте над целесообразностью оптимизации под 256 мб устройства: можно просто запретить запуск приложения на таких устройствах.

#msdevcon Часть 5 Инструменты профилирования и счетчики

namespace Microsoft.Phone.Info { public static class DeviceStatus { public static long ApplicationCurrentMemoryUsage { get; } public static long ApplicationPeakMemoryUsage { get; } public static long ApplicationMemoryUsageLimit { get; } public static long DeviceTotalMemory { get; } } } // получаем лимит памяти на устройстве DeviceExtendedProperties.GetValue("ApplicationWorkingSetLimit") Microsoft.Phone.Info Пишем свой профайлер

Coding4fun Детали: the-Coding4Fun-MemoryCounter-toolhttp://windowsphonegeek.com/articles/Passing-WP7-Memory-Consumption-requirements-with- the-Coding4Fun-MemoryCounter-tool

if (System.Diagnostics.Debugger.IsAttached) { // Display the current frame rate counters. Application.Current.Host.Settings.EnableFrameRateCounter = true; // Show the areas of the app that are being redrawn in each frame. Application.Current.Host.Settings.EnableRedrawRegions = true; // Enable non-production analysis visualization mode, // which shows areas of a page that are handed off to GPU with a colored overlay. Application.Current.Host.Settings.EnableCacheVisualization = true; } Визуализация работы приложения Настройка в App.xaml.cs

Frame rate counters Render Thread FPS. Число кадров в секунду для потока рендеринга. User Interface Thread FPS. Число кадров в секунду потока пользовательского интерфейса. Texture Memory Usage. Счётчик видеопамяти, используемой для хранения текстур. Surface Counter. Число поверхностей, отправленных на графический ускоритель. Intermediate Texture Count. Число промежуточных текстур. Screen Fill Rate. Число полностью закрашенных экранов на каждый кадр.

frame rate counters

Windows Phone Memory Profiler

Windows Phone Marketplace Test Kit Открываем Marketplace Test Kit. В списке Monitored Tests увидим тест Peak Memory Consumption. Запускаем приложение. Тестируем весь функционал, закрываем приложение.

#msdevcon Silverlight For Windows Phone Performance Демонстрация

Полезные материалы

Полезные материалы Разработка WP приложений на устройствах с 256 мб памяти Memory Profiling в Windows Phone приложениях Image Tips for Windows Phone 7 Performance Considerations in Applications for Windows Phone

Полезные материалы Windows Phone 7: Performance Monitoring Improve Performance on Your Windows Phone 7 Apps. Totally Performance of Windows Phone 7 Applications Techniques for memory analysis of Windows Phone apps

Иконки Transition RolesBuildingOrganizationMoving Up Problem Solving Solutions Boxed In Outside The Box DirectionManagement Difficult RoadDecisions Timing Chemistry Give and Take Broadcast Cloud At Home Entertainment

Иконки WiFi StorageHubsComputingDatabase Data Transfer IT Infrastructure SynergyDebug Virtualization Innovation Data Security PositioningThe TargetStrategyGrowth

Иконки MarketplaceSecurity/Privacy BalanceIDPayment GlobalPlacesPhone Cloud DevicesNUITime AnimationGames GamingStrategy Timing Brain

Иконки InnovationStrategyVacationMerge/Vise Home Travel TVOfficeXboxPlug In ToolsFix RemakeDrive/Nail Build/Wall Cut Leak Calendar

Иконки Cloud CompPassion Role/Position I have a quote for you, I think... PC TweetMessage MailPhotosMessenger Video DevicesOutlookTV PC/LAPTOP KINECT WEB

Иконки IW/SQL/SYSTEM CENTER OFFICE WINDOWS PHONE WINDOWS CLOUDCONFIDENTIALITY OR SECURE 2 OPEN WEB PLATFORM RAPID GROWTH PRIVATE CLOUD DEVICES MARKETPLACE WEBSERVICE CROSS PLATFORM OPTIMIZED VIRTUALIZED SERVERS CACHING.NET.Visual Studio WEB SERVER STORAGE

Иконки Еще метро-иконки: Windows 8 Check the Segoe UI Symbol Font

Steve In February, we told you about our goals for connecting your apps, files, PCs, and devices to the cloud with SkyDrive and Windows 8. Since then, we have provided the App Preview of a Windows 8 app to access SkyDrive, and weve updated the SkyDrive web experience. Today, we are delivering new capabilities for SkyDrive across the Windows platform.

Magic happens here

Sometimes you just want to smile.

#msdevcon Контакты АЛЕКСАНДР | wp7rocks.com | msug.vn.ua | devrain.com Руководитель DevRain Solutions Microsoft MVP, Regional Director, PhD. Контакты

#msdevcon Доступна сегодня на: Новая версия Visual Studio!

Полезные материалы

Связанные сессии WEB202 ASP.NET for Mobile and Slate Devices IOP201 Windows Azure and Open Source Solutions

Пожалуйста Оцените доклад и мастерство докладчика Форма для оценки находится в вашем инфопакете

© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.