Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемrutechdays.blob.core.windows.net
1 DevCon12 // msdevcon.ru #msdevcon мая, 2012 г. Microsoft
2 // DevCon12 Повышаем производительность Windows Phone приложений АЛЕКСАНДР | wp7rocks.com | msug.vn.ua | devrain.com Руководитель DevRain Solutions Microsoft MVP, Regional Director, PhD.
3 содержание доклада Работа с XAML и элементами управления. Работа с изображениями. Оптимизация времени старта приложений и работа с памятью. Оптимизация для платформы с 256 Мб памяти. Инструменты профилирования и счетчики.
4 #msdevcon Часть 1 Работа с XAML и элементами управления
5 Потоковая модель 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
6 XAML Используйте как можно более простой XAML код. Сведите к минимуму использование Converters, особенно в связке со сценариями data binding. Избегайте цветовые анимации, а также элемента управления Popup (загружается в основном потоке). Создание элементов управления в коде быстрее чем XAML + data binding. Освободите UI поток от дополнительной работы!!!
7 Pivot или Panorama? У Pivot загружается три панели – предыдущая, текущая и следующая. Panorama загружает все панели и весь контент одновременно. US/education/quickstarts/Pa norama_and_Pivot_Controls
8 Избегайте Callbacks Callbacks у этих классов выполняются в основном потоке: GeoCoordinateWatcher BackgroundWorker WebClient (7.0) Детали: natewatcher-tips-part1.aspx natewatcher-tips-part1.aspx
9 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
10 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);
11 ListView и «ленивая» загрузка Процесс прокрутки включает: разбор (парсинг) XAML; генерация объектов; загрузка и декодирование изображений.
12 ListView и «ленивая» загрузка Что делать: использовать StackPanel если список небольшой; использовать LongListSelector; использовать задержку во время прокрутки; использовать сторонние компоненты: Lazy List, DeferredLoadListBox, Telerik Rad Controls: RadListBoxLazy List DeferredLoadListBoxTelerik Rad Controls: RadListBox
13 Opacity и Visibility При любом изменении значения Visible Silverlight перерисует страницу полностью. Если установить Opacity равным 0 при включенном битмап кэшировании CacheMode = Media.BitmapCache, то Silverlight закэширует элемент управления.
14 Progress bar Стандартный ProgressBar имеет проблемы с производительностью ( Используйте PerformanceProgressBar (автор - Jeff Wilcox) вместо стандартного. В данный момент входит в Silverlight Toolkit for Windows Phone ( Также в Mango появился SystemTray.ProgressBar.
15 SystemTray.ProgressBar ProgressIndicator pi = Microsoft.Phone.Shell.SystemTray.ProgressIndicator; pi.IsVisible = true;
16 Ограничения на размер контролов Элементы управления должны быть не больше чем 2048х2048 пикселей. ScrollableTextBox textblock-windows-phone-7.html textblock-windows-phone-7.html
17 Эмулятор vs. устройство
18 Сериализация и десериализация Сравнение: DataContractJSONSerializer JSON.NET XmlSerlializer Binary serialization
19 Сериализация и десериализация Вывод: бинарная сериализация самая быстрая.
20 #msdevcon Часть 2 Работа с изображениями
21 Стартовый экран Если приложение загружается больше 1 секунды, то показывается splash экран (jpeg 480 x 800px). Не поддерживает анимацию Создание анимированного экрана
22 Content vs. Resource // Content: // Resource:
23 Content vs. Resource Content изображения добавляются в *.xap как обыкновенные файлы. Resource файлы встраиваются непосредственно в библиотеку (*.dll). Выводы: используйте изображения как Content для оптимизации времени старта приложения, используйте Resource для быстрого доступа изображений после инициализации приложения.
24 Общие рекомендации JPEG декодер работает быстрее чем PNG декодер. Используйте CreateOptions = BackgroundCreation для загрузки изображений в фоновом потоке. Максимальный размер изображений: 2000х2000px.
25 Кэширование и дэкодирование // 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);
26 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
27 #msdevcon Часть 3 Оптимизация времени старта приложений и работы с памятью
28 Локализация, отдельные сборки Если вы хотите локализировать приложение, то не включайте все языковые ресурсы в одну сборку. Лучше разбейте их на отдельные библиотеки. Как создавать локализированные приложения: Пример загрузки страницы из другой библиотеки: NavigationService.Navigate( new Uri("/ExternalAssembly;component/Page.xaml", UriKind.Relative) );
29 динамическая загрузка библиотек Динамическая загрузка DataGrid если элемент управления не используется при старте; DataGrid не является стандартным элементом управления; 144KB экономии при старте. Асинхронная загрузка S.W.Controls.Data.Dll Загружаем dll Создаем контрол в отдельном методе (CLR not to JIT inline)
30 #msdevcon Часть 4 Оптимизация для платформы с 256 МБ
31 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 устройства
32 Ограничения Tango Не поддерживается: управление подписками на подкасты и их просмотр; Bing Local Scout; автоматическая загрузка фото в SkyDrive, но это можно будет сделать вручную; воспроизведение некоторых HD видеороликов из-за отсутствия соответствующих кодеков + ограничения на битрейт; фоновые агенты (Background agents).
33 Bing Maps Способ оптимизации
34 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
35 RootFrame = new TransitionFrame(); … Page transitions ~12 МБ, ~17 МБ (пик)
36 RootFrame = new PhoneApplicationFrame(); if (LowMemoryHelper.IsLowMemDevice) { RootFrame = new PhoneApplicationFrame(); } else { RootFrame = new TransitionFrame(); } Page transitions ~6 МБ, ~9 МБ (пик)
37 А также… …обязательно используйте Memory Profiler. …подумайте над целесообразностью оптимизации под 256 мб устройства: можно просто запретить запуск приложения на таких устройствах.
38 #msdevcon Часть 5 Инструменты профилирования и счетчики
39 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 Пишем свой профайлер
40 Coding4fun Детали: the-Coding4Fun-MemoryCounter-toolhttp://windowsphonegeek.com/articles/Passing-WP7-Memory-Consumption-requirements-with- the-Coding4Fun-MemoryCounter-tool
41 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
42 Frame rate counters Render Thread FPS. Число кадров в секунду для потока рендеринга. User Interface Thread FPS. Число кадров в секунду потока пользовательского интерфейса. Texture Memory Usage. Счётчик видеопамяти, используемой для хранения текстур. Surface Counter. Число поверхностей, отправленных на графический ускоритель. Intermediate Texture Count. Число промежуточных текстур. Screen Fill Rate. Число полностью закрашенных экранов на каждый кадр.
43 frame rate counters
44 Windows Phone Memory Profiler
45 Windows Phone Marketplace Test Kit Открываем Marketplace Test Kit. В списке Monitored Tests увидим тест Peak Memory Consumption. Запускаем приложение. Тестируем весь функционал, закрываем приложение.
46 #msdevcon Silverlight For Windows Phone Performance Демонстрация
47 Полезные материалы
48 Полезные материалы Разработка WP приложений на устройствах с 256 мб памяти Memory Profiling в Windows Phone приложениях Image Tips for Windows Phone 7 Performance Considerations in Applications for Windows Phone
49 Полезные материалы 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
50 Иконки Transition RolesBuildingOrganizationMoving Up Problem Solving Solutions Boxed In Outside The Box DirectionManagement Difficult RoadDecisions Timing Chemistry Give and Take Broadcast Cloud At Home Entertainment
51 Иконки WiFi StorageHubsComputingDatabase Data Transfer IT Infrastructure SynergyDebug Virtualization Innovation Data Security PositioningThe TargetStrategyGrowth
52 Иконки MarketplaceSecurity/Privacy BalanceIDPayment GlobalPlacesPhone Cloud DevicesNUITime AnimationGames GamingStrategy Timing Brain
53 Иконки InnovationStrategyVacationMerge/Vise Home Travel TVOfficeXboxPlug In ToolsFix RemakeDrive/Nail Build/Wall Cut Leak Calendar
54 Иконки Cloud CompPassion Role/Position I have a quote for you, I think... PC TweetMessage MailPhotosMessenger Video DevicesOutlookTV PC/LAPTOP KINECT WEB
55 Иконки 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
56 Иконки Еще метро-иконки: Windows 8 Check the Segoe UI Symbol Font
57 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.
58 Magic happens here
59 Sometimes you just want to smile.
60 #msdevcon Контакты АЛЕКСАНДР | wp7rocks.com | msug.vn.ua | devrain.com Руководитель DevRain Solutions Microsoft MVP, Regional Director, PhD. Контакты
61 #msdevcon Доступна сегодня на: Новая версия Visual Studio!
62 Полезные материалы
63 Связанные сессии WEB202 ASP.NET for Mobile and Slate Devices IOP201 Windows Azure and Open Source Solutions
64 Пожалуйста Оцените доклад и мастерство докладчика Форма для оценки находится в вашем инфопакете
65 © 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.
Еще похожие презентации в нашем архиве:
© 2023 MyShared Inc.
All rights reserved.