WP7 Performance ChallengesGergelyOrosz@GergelyOrosz
WP7 Performance ChallengesMy ExperienceEveryday performance challengesVisually rich app performancechallengesComputing intense performance challenges
My Experience
Cocktail Flow
Cocktail Flow ChallengesSerialization / DeserilaizationAnimationsDownloading packages: networkingRich ListBoxesEmulator vs physical device
Visiblox Charts for WP7
Visiblox Charts for WP7 ChallengesAvoiding overloading of the UI threadRealtime drawing on the screenHow fast can you draw on the phone?Memory LeaksData bindingDPs
EverydayPerformance Challenges
Networking & the UIQuestion
Networking & the UIWebClient: simple, easy… runs on the UI thread!HttpWebRequest: complicated &performant
Serialization & DeserializationXmlSerializer
Serialization & DeserializationBinary SerializationDataContractSerializerJson.NETsharpSerializerMike Talbot’s Silverlight SerializerSterling Isolated Storage DBNinja Database Pro
Serialization & DeserializationLoadSave
ListBoxCool in the beginningRusty when you start adding stuffAwfully slow when you start tweaking visualsPain to make it half as fast as on the iPhone
ListBoxSlow with > 50-200 elementsVirtualized, but….Several workaroundsWindows Phone Team: ListBox best practices3rd party Listbox (Telerik)Implement paging
Emulator vs Physical DeviceEmulator usually 2-5x times fasterGPU intensive tasks: emulator can be slowerTest (frequently) on the device
Small ThingsProgressBarSplashscreen while loading PerformanceProgressBar
Visually Rich App Performance Challenges
Frame Rate CountersFPS (render > 30, UI > 15)Texture mem. usageFill Rate (<2.5)Blog post explaining these
BitmapCachevs No CachingNo caching  GUP calculates every timeBitmapCache  “screenshot” saved, no GPU needed
BitmapCachevs no Caching
Image Do’s and Don’t‘sFast (with BitmapCache):Transforms: Scale, Rotate, TranslateOpacitiy changeClipping region changeSlowChanging image with / heightOpacityMaskNon-rectangular clipping areasJpegs are (somewhat) faster than pngs
Computing Intensive Applications
Avoid Overloading the UI ThreadUse BackgroundWorkerThrottle calls to UI while it’s busyvia the “render loop”:E.g a chart is redrawn whenever the Zoom changesA chart redraw takes 100msThe Zoom is changed at 0ms, 40ms, 80ms, 120msThe chart will still be drawing at 40ms & 80ms!
Rendering Real-TimeLightweight vs heavyweight elementsShapes vs Controls vsUserControlsDrawing is more expensive than redrawingReuse existing elementsWriteableBitmap & WriteableBitmapExWorking with large Paths: buggy, slow
Extreme OptimalizationsData BindingAvoid when there are thousands of objectsTakes up memory & notifications may fire too oftenDPsOnly use if neededSlow to read  cache in CLR properties
SummaryNetworking & effect on UI threadSerialization & deserializationListBoxBitmapCaching
Closing ThoughtsUse the performance countersPerformance can be optimized(or you can always cut features…)Test, test, test - on a device!MIX 2011 – performance tool?

More Related Content

PDF
Пиксельные шейдеры для Web-разработчиков. Программируем GPU / Денис Радин (Li...
PPTX
101207 raphael
PPTX
Improving Game Performance in the Browser
PPTX
OGDC2013_ Cross platform game development with html5_ Mr Hoang Dinh Quang
PPTX
Android performance
PDF
Pixel shaders based UI components + writing your first pixel shader
PDF
The Power of WebGL - Hackeando sua GPU com JavaScript
PPTX
Presentation on Fresco
Пиксельные шейдеры для Web-разработчиков. Программируем GPU / Денис Радин (Li...
101207 raphael
Improving Game Performance in the Browser
OGDC2013_ Cross platform game development with html5_ Mr Hoang Dinh Quang
Android performance
Pixel shaders based UI components + writing your first pixel shader
The Power of WebGL - Hackeando sua GPU com JavaScript
Presentation on Fresco

What's hot (16)

PDF
Animations on Fire - Making Web animations fast
PPT
Being a Software Engineer at Facebook
PPTX
Working with the Bing Maps Silverlight Control
PDF
Serious Animation (an introduction to Web Animations)
PDF
10 things I've learned when working with html5 canvas
PPTX
Pokelabo flash 2013/4
PDF
Thinking cpu & memory - DroidCon Paris 18 june 2013
PPTX
What is Cloud Computing?
PDF
Building JavaScript Apps for Force.com with EmberJS
PDF
Get the most out of mobile with Vulkan in Unity
PDF
Creating Compelling Graphics - by Genera
PDF
AWS re:Invent re:Cap - 자동화된 반응형 코드 구동: Amazon Lambda - 정윤진
PPTX
PDF
VMworld 2013: vCenter Operations Management –Troubleshooting Best Practices
PDF
Serverless Apps on Google Cloud: more dev, less ops
PPTX
Traffic congestion prediction with images
Animations on Fire - Making Web animations fast
Being a Software Engineer at Facebook
Working with the Bing Maps Silverlight Control
Serious Animation (an introduction to Web Animations)
10 things I've learned when working with html5 canvas
Pokelabo flash 2013/4
Thinking cpu & memory - DroidCon Paris 18 june 2013
What is Cloud Computing?
Building JavaScript Apps for Force.com with EmberJS
Get the most out of mobile with Vulkan in Unity
Creating Compelling Graphics - by Genera
AWS re:Invent re:Cap - 자동화된 반응형 코드 구동: Amazon Lambda - 정윤진
VMworld 2013: vCenter Operations Management –Troubleshooting Best Practices
Serverless Apps on Google Cloud: more dev, less ops
Traffic congestion prediction with images
Ad

Similar to Wp7 performance challenges (20)

PPT
Well Behaved Mobile Apps on AIR - Performance Related
PPT
Capacity Management from Flickr
PDF
Performance as UX with Justin Howlett
PPTX
Node.JS| Coffeescript Presentation
PDF
Adobe AIR - Mobile Performance – Tips & Tricks
PDF
Understanding Hardware Acceleration on Mobile Browsers
PDF
Understanding hardware acceleration on mobile browsers presentation
PDF
Qt and QML performance tips & tricks for Qt 4.7
PPTX
Netflix Webkit-Based UI for TV Devices
PDF
Delivering Optimal Images for Phones and Tablets on the Modern Web
PDF
Running HTML5 Mobile Web Games at 60fps
PDF
Capacity Management for Web Operations
PPTX
Advanced Silverlight
PDF
Deploying Models at Scale with Apache Beam
PDF
Visualization for the Manufacturing Enterprise
ZIP
Rails in the Cloud
PDF
Virtualization and Cloud Computing with Elastic Server On Demand
PPTX
Kisters 3DViewStation - CAD viewer for PLM and stand alone
PDF
A scalable server environment for your applications
PDF
Javaland 2014 / GWT architectures and lessons learned
Well Behaved Mobile Apps on AIR - Performance Related
Capacity Management from Flickr
Performance as UX with Justin Howlett
Node.JS| Coffeescript Presentation
Adobe AIR - Mobile Performance – Tips & Tricks
Understanding Hardware Acceleration on Mobile Browsers
Understanding hardware acceleration on mobile browsers presentation
Qt and QML performance tips & tricks for Qt 4.7
Netflix Webkit-Based UI for TV Devices
Delivering Optimal Images for Phones and Tablets on the Modern Web
Running HTML5 Mobile Web Games at 60fps
Capacity Management for Web Operations
Advanced Silverlight
Deploying Models at Scale with Apache Beam
Visualization for the Manufacturing Enterprise
Rails in the Cloud
Virtualization and Cloud Computing with Elastic Server On Demand
Kisters 3DViewStation - CAD viewer for PLM and stand alone
A scalable server environment for your applications
Javaland 2014 / GWT architectures and lessons learned
Ad

More from Gergely Orosz (6)

PPTX
Payments Integration at Uber: a (Short) Case Study
PPTX
Mobile Architecture at Scale
PPTX
Continuous testing at scale
PPTX
Success on the Marketplace, App Store and Apps Marketplace
PPTX
Developing for Windows Phone 7
PPT
An Introduction To Silverlight
Payments Integration at Uber: a (Short) Case Study
Mobile Architecture at Scale
Continuous testing at scale
Success on the Marketplace, App Store and Apps Marketplace
Developing for Windows Phone 7
An Introduction To Silverlight

Wp7 performance challenges