by hanxia

Slides
26 slides

Windows 8.1 store app performance optimization

Published Dec 13, 2013 in Technology
Direct Link :

Windows 8.1 store app performance optimization... Read more

Read less


Comments

comments powered by Disqus

Presentation Slides & Transcript

Presentation Slides & Transcript

WAD-B307让您的Windows 8.1 应用行云流水 -海量数据处理的优化和开发技巧夏寒

课程安排提高应用性能的通用技巧使用虚拟化技术Windows 8.1平台上的性能优化

影响应用体验的因素启动与加载速度应用启动时间,页面加载时间 …与用户交互的流畅度响应时间,动画效果 …数据处理效率内存消耗,电池消耗 …

减少应用启动和加载时间减少引用的XAML文件及XAML中的元素数目减少加载的资源和文件,避免同步IO操作,采用延迟加载技术。充分利用虚拟化技术,只加载和显示可见的数据

提高用户交互的流畅度采用异步编程Async, AwaitAsyncInfo.Run ThreadPool对用户操作提供必要的动画效果独立动画 (Independent animations)动画库 (Animation Library)将长时间的任务分解

合理安排不同线程的工作UI线程XAML解析布局数据绑定输入处理用户代码提交渲染帧工作线程图像解码音视频播放用户业务代码渲染线程运行独立动画提交绘制指令到DX

使动画更平滑使用独立动画,避免依赖动画依赖动画影响布局,工作在UI线程独立动画不影响布局,工作在渲染线程基于场景的动画库避免叠加绘制对于需重叠区域可使用CacheMode

调试选项DebugSettings.EnableFrameRateCounterDebugSettings.EnableRedrawRegionsDebugSettings.IsOverdrawHeatMapEnabled

性能分析工具Windows Performance Toolkit包含在Windows ADK中侧重从系统层面分析问题Visual Studio Performance Analyze包含在Visual Studio 2013中侧重从应用代码层面分析问题

采用虚拟化技术处理数据数据虚拟化(Data Virtualization)UI 虚拟化 (UI Virtualization)

UI虚拟化支持Virtualizing的面板:VirtualizingStackPanel WrapGrid,ItemWrapGrid不支持Virtualizing的面板StackPanelVariableSizedWrapGridVirtualizingStackPanel.VirtualizationMode

数据虚拟化Model: 从服务端获得分页数据ViewModel:支持ISupportIncrementalLoading接口HasMoreItems LoadMoreItemsAsync View: 设定参数IncrementalLoadingTrigger IncrementalLoadingThresholdDataFetchSize

Windows 8.1下的优化新增ItemsWrapGrid面板优化Item Container Template支持占位符支持增量更新ContainerContentChanging

ItemsWrapGrid对UI虚拟化的改进

数据模板和项容器模板的区别Data Template用来定义数据项的布局Item Container Template用来定义数据项的状态

优化Item Container TemplateWindows 8Windows 8.1

占位符支持Windows 8

Windows 8.1:ShowsScrollingPlaceholders占位符支持

Windows 8.1:ShowsScrollingPlaceholders PlaceholderBackground占位符支持

增量更新流程phase 0

增量更新流程phase 1

增量更新流程phase 2

增量更新流程phase 3

ContainerContentChangingContainerContentChanging 参数RegisterUpdateCallback HandledItemContainerItemInRecycleQueueItemIndex

IncrementalUpdateBehavior基于ContainerContentChanging的实现使用方法:

Thanks