iOS and macOS Performance Tuning: Cocoa, Cocoa Touch, Objective-C, and Swift

iOS and macOS Performance Tuning: Cocoa, Cocoa Touch, Objective-C, and Swift

By: Marcel Weiher (author)Paperback

Special OrderSpecial Order item not currently available. We'll try and order for you.

Description

In iOS and macOS (TM) Performance Tuning, Marcel Weiher drills down to the code level to help you systematically optimize CPU, memory, I/O, graphics, and program responsiveness in any Objective-C, Cocoa, or CocoaTouch program. This guide focuses entirely on performance optimization for macOS and iOS. Drawing on more than 25 years of experience optimizing Apple device software, Weiher identifies concrete performance problems that can be discovered empirically via measurement. Then, based on a deep understanding of fundamental principles, he presents specific techniques for solving them. Weiher presents insights you won't find anywhere else, most of them applying to both macOS and iOS development. Throughout, he reveals common pitfalls and misconceptions about Apple device performance, explains the realities, and helps you reflect those realities in code that performs beautifully. Understand optimization principles, measurement, tools, pitfalls, and techniques Recognize when to carefully optimize, and when it isn't worth your time Balance performance and encapsulation to create efficient object representations, communication, data access, and computation Avoid mistakes that slow down Objective-C programs and hinder later optimization Fix leaks and other problems with memory and resource management Address I/O issues associated with drives, networking, serialization, and SQLite Code graphics and UIs that don't overwhelm limited iOS device resources Learn what all developers need to know about Swift performance This book's source code can be downloaded at github.com/mpw/iOS-macOS-performance. Register your product at informit.com/register for convenient access to downloads, updates, and corrections as they become available.

About Author

Marcel Weiher is a software engineeer and researcher with more than 25 years of experience with Cocoa-related technologies. Marcel's work has always been performance-focused, ranging from solving impossible pre-press problems on the machines of the day via optimizing one of the world's busiest web properties at the BBC to helping other Apple engineers improve the performance of their code on Apple's Mac OS X performance team. In addition to helping established companies and startups create award-winning software and turn around development teams, Marcel also teaches, blogs, speaks at conferences, contributes to open source, and invents new techniques such as Higher Order Messaging. He also works on programming languages, starting with an Objective-C implementation in 1987 and culminating in the Objective-Smalltalk architecture research language. Marcel currently works as a principal software engineer at Microsoft Berlin and maintains his own software and consulting company, metaobject ltd.

Contents

About the Author xv Introduction xvii Chapter 1: CPU: Principles 1 A Simple Example 2 The Power of Hybrids 10 Trends 11 Cost of Operations 12 Computational Complexity 14 Summary 16 Chapter 2: CPU: Measurement and Tools 17 Command-Line Tools 18 Xcode Gauges 22 Instruments 22 Internal Measurement 35 Dtrace 38 Optimization Beyond the Call of Duty 38 Summary 39 Chapter 3: CPU: Pitfalls and Techniques 41 Representation 41 Objects 48 Messaging 64 Methods 71 Multicore 72 Mature Optimization 75 Chapter 4: CPU Example: XML Parsing 79 An HTML Scanner 80 Mapping Callbacks to Messages 83 Objects 85 Objects, Cheaply 87 Evaluation 90 Tune-Ups 93 Optimizing the Whole Widget: MAX 94 MAX Implementation 96 Summary 97 Chapter 5: Memory: Principles 99 The Memory Hierarchy 99 Mach Virtual Memory 105 Heap and Stack 106 Resource Management 113 Summary 117 Chapter 6: Memory: Measurement and Tools 119 Xcode Gauges 119 Command-Line Tools 120 Internal Measurement 125 Memory Instruments 126 Summary 136 Chapter 7: Memory: Pitfalls and Techniques 137 Reference Counting 137 Foundation Objects vs. Primitives 141 Smaller Structures 142 Memory and Concurrency 146 Architectural Considerations 147 Temporary Allocations and Object Caching 151 NSCache and libcache 153 Memory-Mapped Files 153 madvise 156 iOS Considerations 157 Optimizing ARC 157 Summary 160 Chapter 8: Memory Example: FilterStreams 161 Unix Pipes and Filters 161 Object-Oriented Filters 163 DescriptionStream 164 Stream Hierarchy 170 Summary 171 Chapter 9: Swift 173 Swift Performance: Claims 173 Assessing Swift Performance 177 Larger Examples 188 Compile Times 191 Optimizer-Oriented Programming 195 A Sufficiently Smart Compiler 197 Summary 204 Chapter 10: I/O: Principles 205 Hardware 205 Operating System 208 Summary 214 Chapter 11: I/O: Measurement and Tools 215 Negative Space: top and time 216 Summary Information: iostat and netstat 217 Instruments 218 Detailed Tracing: fs usage 221 Summary 224 Chapter 12: I/O: Pitfalls and Techniques 225 Pushing Bytes with NSData 225 Unixy I/O 230 Network I/O 232 Serialization 242 CoreData 253 SQLite 261 Event Posting 264 Segregated Stores 265 Summary 266 Chapter 13: I/O: Examples 267 iPhone Game Dictionary 267 Fun with Property Lists 271 Comma-Separated Values 282 Public Transport Schedule Data 283 Faster CSV Parsing 288 Summary 293 Chapter 14: Graphics and UI: Principles 295 Responsiveness 295 Software and APIs 296 Quartz and the PostScript Imaging Model 299 OpenGL 300 Metal 301 Graphics Hardware and Acceleration 301 From Quartz Extreme to Core Animation 305 Summary 308 Chapter 15: Graphics and UI: Measurement and Tools 309 CPU Profiling with Instruments 310 Quartz Debug 311 Core Animation Instrument 312 What Am I Measuring? 318 Summary 323 Chapter 16: Graphics and UI: Pitfalls and Techniques 325 Pitfalls 325 Techniques 326 Too Much Communication Slows Down Installation 327 Overwhelming an iPhone 330 It's Just an Illusion 332 Line Drawing on iPhone 338 Summary 341 Chapter 17: Graphics and UI: Examples 343 Beautiful Weather App 343 Wunderlist 3 350 Summary 357 Index 359

Product Details

  • ISBN13: 9780321842848
  • Format: Paperback
  • Number Of Pages: 400
  • ID: 9780321842848
  • weight: 624
  • ISBN10: 0321842847

Delivery Information

  • Saver Delivery: Yes
  • 1st Class Delivery: Yes
  • Courier Delivery: Yes
  • Store Delivery: Yes

Prices are for internet purchases only. Prices and availability in WHSmith Stores may vary significantly

Close