debugging energy issues · 2016. 7. 8. · energy fundamentals and best practices energy debugging...

133
© 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. #WWDC15 Debugging Energy Issues Abhinav Pathak iOS Power Team Pai-Han Huang iOS Power Team System Frameworks Session 708

Upload: others

Post on 31-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

© 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

#WWDC15

Debugging Energy Issues

Abhinav Pathak iOS Power TeamPai-Han Huang iOS Power Team

System Frameworks

Session 708

Page 2: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 3: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 4: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 5: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 6: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 7: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 8: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Fundamentals and Best Practices

Energy Debugging Workflow and Tools

Demo: Fixing Energy Issues on iOS

1

2

3

Final Thoughts4

Page 9: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy 101Energy = power * time

Time

Power

Page 10: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy 101Energy = power * time

Time

Power

App Launch

App Activities

App Backgrounded

App Suspended

Page 11: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy 101Energy = power * time

Time

Power

App Launch

App Activities

App Backgrounded

App Suspended

Page 12: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy 101Minimizing overhead cost

Time

Power

App Launch

App Activities

App Backgrounded

App Suspended

Dynamic

Fixed

Page 13: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Reducing Energy UseWhat it comes down to…

Do it never/do it lessDo it at a better timeDo it efficiently

Page 14: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Fundamentals and Best Practices

Energy Debugging Workflow and Tools

Demo: Fixing Energy Issues on iOS

1

2

3

Final Thoughts4

Page 15: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

Page 16: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

Write Code and Build

Page 17: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

General Debugger Write Code and Build

Issue Found

Page 18: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Focused Debugger

Energy Debugging WorkFlow

General Debugger Write Code and Build

Issue Found

Page 19: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

CustomersFocused Debugger

Energy Debugging WorkFlow

General Debugger Write Code and Build

Issue Found

Page 20: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

CustomersFocused DebuggerGeneral Debugger Write Code and Build

Issue Found

Page 21: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

CustomersFocused DebuggerGeneral Debugger Write Code and Build

Issue Found

Page 22: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

CustomersFocused DebuggerGeneral Debugger Write Code and Build

Issue Found

Page 23: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

CustomersFocused DebuggerGeneral Debugger Write Code and Build

Issue Found

Page 24: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

CustomersFocused DebuggerGeneral Debugger Write Code and Build

Issue Found

Page 25: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging Priorities on OS X

Priorities on OS X are CPU and GPUHigh fixed cost: let giant compute units rest! (sleep)

Sleep

Idle

1% CPU Use

10% CPU Use

100% CPU Use

10x Power of Sleep

10% Higher Power of Idle

2x Power of Idle

100x Power of Idle

1x

Power Consumption

Page 26: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Gauges on OS X

Page 27: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Gauges on OS X

Page 28: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Gauges on OS X

Page 29: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Gauges on OS X

Page 30: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Gauges on OS X

Page 31: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Gauges on OS X

Page 32: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Gauges on OS X

Page 33: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Gauges on OS X

Page 34: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Gauges on OS X

Page 35: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Reducing Energy on OS X

Do it never/do it less • Coalesce timers => let CPU idle• Minimize CPU wakes

Do it at a better time• Scheduling with NSBackgroundActivityScheduler

Do it efficiently • Set appropriate QoS work priorities

Page 36: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging Priorities in iOS

Page 37: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging Priorities in iOS

LocationCPU

Networking Background

Page 38: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Location Energy

Time

Power

Page 39: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Efficient LocationConcepts to remember

Do it never/do it less• Continuous location only if absolutely needed• Stop location when you’re done with it

Page 40: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Efficient LocationConcepts to remember

Do it never/do it less• Continuous location only if absolutely needed• Stop location when you’re done with it

Do it efficiently• What accuracy is actually required for app? • Which location API to use?

- Deferred location updates, significant location change, region monitoring- iBeacons, AutoPause, significant locations visited

Page 41: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Efficient NetworkingConcepts to remember

Do it never/do it less• Cut down transfers: caching, compression, media quality, etc.

Page 42: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Efficient NetworkingConcepts to remember

Do it never/do it less• Cut down transfers: caching, compression, media quality, etc.

Do it at a better time• Consider tolerance: when is it needed, is it discretionary, etc.

Page 43: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Efficient NetworkingConcepts to remember

Do it never/do it less• Cut down transfers: caching, compression, media quality, etc.

Do it at a better time• Consider tolerance: when is it needed, is it discretionary, etc.

Do it more efficiently• Coalesce transfers

Page 44: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Networking Application

Requirements• Sync data to server

Page 45: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Networking Application

Requirements• Sync data to server

Simple solution• Sync data as it comes

Page 46: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Networking Application

Requirements• Sync data to server

Simple solution• Sync data as it comes

Page 47: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Networking Application

Requirements• Sync data to server

Simple solution• Sync data as it comes

Energy efficient solution• Buffer data before syncing

Page 48: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Networking Application

Requirements• Sync data to server

Simple solution• Sync data as it comes

Energy efficient solution• Buffer data before syncing

Page 49: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Efficient Background ActivityConcepts to remember

Do it never/do it less• Do not run in background• Call Background Task Completion Handler as soon as work is completed

Page 50: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Efficient Background ActivityConcepts to remember

Do it never/do it less• Do not run in background• Call Background Task Completion Handler as soon as work is completed

Do it efficiently• Call energy-efficient background APIs• Ex: - application:performFetchWithCompletionHandler:

Page 51: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

CustomersFocused DebuggerGeneral Debugger Write Code and Build

Issue Found

Page 52: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

CustomersFocused DebuggerGeneral Debugger Write Code and Build

Issue Found

Page 53: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

CustomersFocused DebuggerGeneral Debugger Write Code and Build

Issue Found

Page 54: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

CustomersFocused DebuggerGeneral Debugger Write Code and Build

Issue Found

Page 55: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy DiagnosticsSettings > Developer > Logging

Page 56: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy DiagnosticsSettings > Developer > Logging

Page 57: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy DiagnosticsSettings > Developer > Logging

Page 58: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy DiagnosticsSettings > Developer > Logging

Page 59: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy DiagnosticsSettings > Developer > Logging

Page 60: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Diagnostics

Page 61: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Diagnostics

Page 62: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

CustomersFocused DebuggerGeneral Debugger Write Code and Build

Issue Found

Page 63: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Debugging WorkFlow

CustomersFocused DebuggerGeneral Debugger Write Code and Build

Issue Found

Page 64: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Fundamentals and Best Practices

Energy Debugging Workflow and Tools

Demo: Fixing Energy Issues on iOS

1

2

3

Final Thoughts4

Page 65: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Demo

Pai-Han HuangiOS Power Team

Page 66: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 67: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 68: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 69: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 70: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 71: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 72: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 73: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 74: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 75: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 76: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 77: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 78: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 79: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 80: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 81: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 82: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 83: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 84: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 85: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 86: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 87: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 88: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 89: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 90: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 91: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 92: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 93: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 94: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 95: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 96: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 97: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 98: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 99: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts
Page 100: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Buddy: Demo App

EnergyBuddy

Page 101: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Buddy: Demo App

Data Manager

EnergyBuddy

Page 102: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Buddy: Demo App

New Reading

Data Manager

EnergyBuddy

Page 103: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Buddy: Demo App

Location

Location Services

New Reading

Data Manager

EnergyBuddy

Page 104: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Buddy: Demo App

Weather

Location

Location Services

New Reading

Data Manager

EnergyBuddy

Page 105: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Buddy: Demo App

Weather

Location

Location Services

New Reading

Data Manager

EnergyBuddy

Page 106: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Demo

Pai-Han HuangiOS Power Team

Page 107: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Fundamentals and Best Practices

Energy Debugging Workflow and Tools

Demo: Fixing Energy Issues on iOS

1

2

3

Final Thoughts4

Page 108: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Buddy: Demo AppEnergy inefficient code

Page 109: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

LocationEnergy inefficient code

func locationManager(manager: CLLocationManager, ……) {      let location = locations[locations.count-1] as! CLLocation      if let confirmViewController? = self.confirmViewController {           confirmViewController.handleLocation(location)      } }

Page 110: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

LocationEnergy optimized code

func locationManager(manager: CLLocationManager, ……) {      let location = locations[locations.count-1] as! CLLocation      if let confirmViewController? = self.confirmViewController {           confirmViewController.handleLocation(location)      }      self.locationManager.stopUpdatingLocation() }

Page 111: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Location

Energy Inefficient Code

Energy Optimized Code

Page 112: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Inefficient Code

Energy Optimized Code

Location

Page 113: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Inefficient Code

Energy Optimized Code

Location

Page 114: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

NetworkingEnergy inefficient code

{ ………   app.dataManager.storeEnergyData(location: location, values: values)        var weather = getWeather()     app.dataManager.storeWeatherData(weather) }

Page 115: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

NetworkingEnergy optimized code

{ ………   app.dataManager.storeEnergyData(location: location, values: values)     

if(!recentlyCalled()) {      var weather = getWeather()      app.dataManager.storeWeatherData(weather) } }

Page 116: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

NetworkingEnergy optimized code

{ ………   app.dataManager.storeEnergyData(location: location, values: values)     

if(!recentlyCalled()) {      var weather = getWeather()      app.dataManager.storeWeatherData(weather) } }

Page 117: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Networking

Energy Inefficient Code

Energy Optimized Code

Page 118: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Networking

Energy Inefficient Code

Energy Optimized Code

Page 119: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Networking

Energy Inefficient Code

Energy Optimized Code

Page 120: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

BackgroundEnergy inefficient code

func applicationDidEnterBackground(application: UIApplication) { ………… self.archiveToDataManager() self.waitForInput()

}

Page 121: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

BackgroundEnergy optimized code

func applicationDidEnterBackground(application: UIApplication) { ………… self.archiveToDataManager()

//self.waitForInput()

UIApplication.sharedApplication().endBackgroundTask(             self.backgroundTaskIdentifier)        self.backgroundTaskIdentifier = UIBackgroundTaskInvalid

}

Page 122: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Background

Energy Inefficient Code

Energy Optimized Code

Page 123: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Background

Energy Inefficient Code

Energy Optimized Code

Page 124: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Background

Energy Inefficient Code

Energy Optimized Code

Page 125: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Inefficient Code

Energy Optimized Code

Page 126: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Energy Buddy: Demo AppStatistics before/after fixing energy issues

Living on app • 50% energy reduction• Battery UI shows app is lower in list

Energy Inefficient Code Energy Optimized Code

Page 127: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

SummaryYour turn

Battery life impacts user experienceDesign your apps with the following in mind Do it never/less Do it more efficiently Do it at a better timeBe a considerate background app

Page 128: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Summary

• Try out new energy debugging tools• Check out energy documentation• Bring your apps to power lab

Page 129: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

More Information

Documentation and VideosiOS Energy Guidehttps://developer.apple.com/go/?id=ios-energy-efficiency-guide

OS X Energy Guidehttps://developer.apple.com/library/mac/documentation/Performance/Conceptual/power_efficiency_guidelines_osx/

Writing Energy Efficient Code, Parts 1 and 2 (2014)http://developer.apple.com/videos

Page 130: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

More Information

Technical SupportApple Developer Forumshttp://developer.apple.com/forums

Developer Technical Supporthttp://developer.apple.com/support/technical

General InquiriesPaul Danbold, Core OS [email protected]

Page 131: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Related Labs

Power and Performance Lab Frameworks Lab B Wednesday 1:30PM

Networking Lab Frameworks Lab E Thursday 10:00AM

Core Location Lab Frameworks Lab A Thursday 2:30PM

Power and Performance Lab Frameworks Lab C Friday 12:00PM

Networking Lab Frameworks Lab B Friday 1:30PM

Page 132: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts

Related Sessions

Achieving All-Day Battery Life Nob Hill Wednesday 9:00AM

Networking with NSURLSession Pacific Heights Thursday 9:00AM

What's New in Core Location Pacific Heights Thursday 1:30PM

Advanced NSOperations Presidio Friday 9:00AM

Building Responsive and Efficient Apps with GCD Nob Hill Friday 10:00AM

Performance on iOS and watchOS Presidio Friday 11:00AM

Page 133: Debugging Energy Issues · 2016. 7. 8. · Energy Fundamentals and Best Practices Energy Debugging Workflow and Tools Demo: Fixing Energy Issues on iOS 1 2 3 4 Final Thoughts