SlideShare una empresa de Scribd logo
1 de 28
WP7 Performance Challenges GergelyOrosz @GergelyOrosz
WP7 Performance Challenges My Experience Everyday performance challenges Visually rich app performancechallenges Computing intense performance challenges
My Experience
Cocktail Flow
Cocktail Flow Challenges Serialization / Deserilaization Animations Downloading packages: networking Rich ListBoxes Emulator vs physical device
Visiblox Charts for WP7
Visiblox Charts for WP7 Challenges Avoiding overloading of the UI thread Realtime drawing on the screen How fast can you draw on the phone? Memory Leaks Data binding DPs
EverydayPerformance Challenges
Networking & the UI Question
Networking & the UI WebClient: simple, easy … runs on the UI thread! HttpWebRequest: complicated &performant
Serialization & Deserialization XmlSerializer
Serialization & Deserialization Binary Serialization DataContractSerializer Json.NET sharpSerializer Mike Talbot’s Silverlight Serializer Sterling Isolated Storage DB Ninja Database Pro
Serialization & Deserialization Load Save
ListBox Cool in the beginning Rusty when you start adding stuff Awfully slow when you start tweaking visuals Pain to make it half as fast as on the iPhone
ListBox Slow with > 50-200 elements Virtualized, but…. Several workarounds Windows Phone Team: ListBox best practices 3rd party Listbox (Telerik) Implement paging
Emulator vs Physical Device Emulator usually 2-5x times faster GPU intensive tasks: emulator can be slower Test (frequently) on the device
Small Things ProgressBar Splashscreen while loading  PerformanceProgressBar
Visually Rich App Performance Challenges
Frame Rate Counters FPS (render > 30, UI > 15) Texture mem. usage Fill Rate (<2.5) Blog post explaining these
BitmapCachevs No Caching No caching  GUP calculates every time BitmapCache  “screenshot” saved, no GPU needed
BitmapCachevs no Caching
Image Do’s and Don’t‘s Fast (with BitmapCache): Transforms: Scale, Rotate, Translate Opacitiy change Clipping region change Slow Changing image with / height OpacityMask Non-rectangular clipping areas Jpegs are (somewhat) faster than pngs
Computing Intensive Applications
Avoid Overloading the UI Thread Use BackgroundWorker Throttle calls to UI while it’s busyvia the “render loop”: E.g a chart is redrawn whenever the Zoom changes A chart redraw takes 100ms The Zoom is changed at 0ms, 40ms, 80ms, 120ms The chart will still be drawing at 40ms & 80ms!
Rendering Real-Time Lightweight vs heavyweight elements Shapes vs Controls vsUserControls Drawing is more expensive than redrawing Reuse existing elements WriteableBitmap & WriteableBitmapEx Working with large Paths: buggy, slow
Extreme Optimalizations Data Binding Avoid when there are thousands of objects Takes up memory & notifications may fire too often DPs Only use if needed Slow to read  cache in CLR properties
Summary Networking & effect on UI thread Serialization & deserialization ListBox BitmapCaching
Closing Thoughts Use the performance counters Performance can be optimized (or you can always cut features…) Test, test, test - on a device! MIX 2011 – performance tool?

Más contenido relacionado

La actualidad más candente

Animations on Fire - Making Web animations fast
Animations on Fire - Making Web animations fastAnimations on Fire - Making Web animations fast
Animations on Fire - Making Web animations fastbrianskold
 
Being a Software Engineer at Facebook
Being a Software Engineer at FacebookBeing a Software Engineer at Facebook
Being a Software Engineer at FacebookTyrone Nicholas
 
Working with the Bing Maps Silverlight Control
Working with the Bing Maps Silverlight ControlWorking with the Bing Maps Silverlight Control
Working with the Bing Maps Silverlight Controlmark mann
 
Serious Animation (an introduction to Web Animations)
Serious Animation (an introduction to Web Animations)Serious Animation (an introduction to Web Animations)
Serious Animation (an introduction to Web Animations)brianskold
 
10 things I've learned when working with html5 canvas
10 things I've learned when working with html5 canvas10 things I've learned when working with html5 canvas
10 things I've learned when working with html5 canvasFrançois Crevola
 
Pokelabo flash 2013/4
Pokelabo flash 2013/4Pokelabo flash 2013/4
Pokelabo flash 2013/4Shota Suzuki
 
Thinking cpu & memory - DroidCon Paris 18 june 2013
Thinking cpu & memory - DroidCon Paris 18 june 2013Thinking cpu & memory - DroidCon Paris 18 june 2013
Thinking cpu & memory - DroidCon Paris 18 june 2013Paris Android User Group
 
What is Cloud Computing?
What is Cloud Computing?What is Cloud Computing?
What is Cloud Computing?Chris Riccio
 
Building JavaScript Apps for Force.com with EmberJS
Building JavaScript Apps for Force.com with EmberJSBuilding JavaScript Apps for Force.com with EmberJS
Building JavaScript Apps for Force.com with EmberJSSalesforce Developers
 
Get the most out of mobile with Vulkan in Unity
Get the most out of mobile with Vulkan in UnityGet the most out of mobile with Vulkan in Unity
Get the most out of mobile with Vulkan in UnityDevGAMM Conference
 
Creating Compelling Graphics - by Genera
Creating Compelling Graphics - by GeneraCreating Compelling Graphics - by Genera
Creating Compelling Graphics - by GeneraVodafone developer
 
AWS re:Invent re:Cap - 자동화된 반응형 코드 구동: Amazon Lambda - 정윤진
AWS re:Invent re:Cap - 자동화된 반응형 코드 구동: Amazon Lambda - 정윤진AWS re:Invent re:Cap - 자동화된 반응형 코드 구동: Amazon Lambda - 정윤진
AWS re:Invent re:Cap - 자동화된 반응형 코드 구동: Amazon Lambda - 정윤진Amazon Web Services Korea
 
VMworld 2013: vCenter Operations Management –Troubleshooting Best Practices
VMworld 2013: vCenter Operations Management –Troubleshooting Best Practices VMworld 2013: vCenter Operations Management –Troubleshooting Best Practices
VMworld 2013: vCenter Operations Management –Troubleshooting Best Practices VMworld
 
Serverless Apps on Google Cloud: more dev, less ops
Serverless Apps on Google Cloud:  more dev, less opsServerless Apps on Google Cloud:  more dev, less ops
Serverless Apps on Google Cloud: more dev, less opsJoseph Lust
 
Traffic congestion prediction with images
Traffic congestion prediction with imagesTraffic congestion prediction with images
Traffic congestion prediction with imagesMaximilian Jackson
 

La actualidad más candente (16)

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

Similar a Wp7 performance challenges

Well Behaved Mobile Apps on AIR - Performance Related
Well Behaved Mobile Apps on AIR - Performance RelatedWell Behaved Mobile Apps on AIR - Performance Related
Well Behaved Mobile Apps on AIR - Performance RelatedRenaun Erickson
 
Capacity Management from Flickr
Capacity Management from FlickrCapacity Management from Flickr
Capacity Management from Flickrxlight
 
Performance as UX with Justin Howlett
Performance as UX with Justin HowlettPerformance as UX with Justin Howlett
Performance as UX with Justin HowlettFITC
 
Node.JS| Coffeescript Presentation
Node.JS| Coffeescript PresentationNode.JS| Coffeescript Presentation
Node.JS| Coffeescript PresentationSam Frons
 
Adobe AIR - Mobile Performance – Tips & Tricks
Adobe AIR - Mobile Performance – Tips & TricksAdobe AIR - Mobile Performance – Tips & Tricks
Adobe AIR - Mobile Performance – Tips & TricksMihai Corlan
 
Understanding hardware acceleration on mobile browsers presentation
Understanding hardware acceleration on mobile browsers presentationUnderstanding hardware acceleration on mobile browsers presentation
Understanding hardware acceleration on mobile browsers presentationJustin Dorfman
 
Understanding Hardware Acceleration on Mobile Browsers
Understanding Hardware Acceleration on Mobile BrowsersUnderstanding Hardware Acceleration on Mobile Browsers
Understanding Hardware Acceleration on Mobile BrowsersAriya Hidayat
 
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Pasi Kellokoski
 
Netflix Webkit-Based UI for TV Devices
Netflix Webkit-Based UI for TV DevicesNetflix Webkit-Based UI for TV Devices
Netflix Webkit-Based UI for TV DevicesMatt McCarthy
 
Delivering Optimal Images for Phones and Tablets on the Modern Web
Delivering Optimal Images for Phones and Tablets on the Modern WebDelivering Optimal Images for Phones and Tablets on the Modern Web
Delivering Optimal Images for Phones and Tablets on the Modern WebJoshua Marantz
 
Running HTML5 Mobile Web Games at 60fps
Running HTML5 Mobile Web Games at 60fpsRunning HTML5 Mobile Web Games at 60fps
Running HTML5 Mobile Web Games at 60fpsApoorv Saxena
 
Capacity Management for Web Operations
Capacity Management for Web OperationsCapacity Management for Web Operations
Capacity Management for Web OperationsJohn Allspaw
 
Advanced Silverlight
Advanced SilverlightAdvanced Silverlight
Advanced Silverlightrsnarayanan
 
Deploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamDeploying Models at Scale with Apache Beam
Deploying Models at Scale with Apache BeamAll Things Open
 
Visualization for the Manufacturing Enterprise
Visualization for the Manufacturing EnterpriseVisualization for the Manufacturing Enterprise
Visualization for the Manufacturing EnterpriseGermar Nikol
 
Rails in the Cloud
Rails in the CloudRails in the Cloud
Rails in the Cloudiwarshak
 
Virtualization and Cloud Computing with Elastic Server On Demand
Virtualization and Cloud Computing with Elastic Server On DemandVirtualization and Cloud Computing with Elastic Server On Demand
Virtualization and Cloud Computing with Elastic Server On DemandYan Pritzker
 
Kisters 3DViewStation - CAD viewer for PLM and stand alone
Kisters 3DViewStation - CAD viewer for PLM and stand aloneKisters 3DViewStation - CAD viewer for PLM and stand alone
Kisters 3DViewStation - CAD viewer for PLM and stand aloneGermar Nikol
 
A scalable server environment for your applications
A scalable server environment for your applicationsA scalable server environment for your applications
A scalable server environment for your applicationsGigaSpaces
 
Javaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedJavaland 2014 / GWT architectures and lessons learned
Javaland 2014 / GWT architectures and lessons learnedpgt technology scouting GmbH
 

Similar a Wp7 performance challenges (20)

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

Más de Gergely Orosz

Payments Integration at Uber: a (Short) Case Study
Payments Integration at Uber: a (Short) Case StudyPayments Integration at Uber: a (Short) Case Study
Payments Integration at Uber: a (Short) Case StudyGergely Orosz
 
Mobile Architecture at Scale
Mobile Architecture at ScaleMobile Architecture at Scale
Mobile Architecture at ScaleGergely Orosz
 
Continuous testing at scale
Continuous testing at scaleContinuous testing at scale
Continuous testing at scaleGergely Orosz
 
Success on the Marketplace, App Store and Apps Marketplace
Success on the Marketplace, App Store and Apps MarketplaceSuccess on the Marketplace, App Store and Apps Marketplace
Success on the Marketplace, App Store and Apps MarketplaceGergely Orosz
 
Developing for Windows Phone 7
Developing for Windows Phone 7Developing for Windows Phone 7
Developing for Windows Phone 7Gergely Orosz
 
An Introduction To Silverlight
An Introduction To SilverlightAn Introduction To Silverlight
An Introduction To SilverlightGergely Orosz
 

Más de Gergely Orosz (6)

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

Wp7 performance challenges