iOS and macOS Performance Tuning
Addison-Wesley Educational Publishers Inc (Verlag)
978-0-321-84284-8 (ISBN)
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.
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.
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
Erscheint lt. Verlag | 27.3.2017 |
---|---|
Reihe/Serie | Developer's Library |
Verlagsort | New Jersey |
Sprache | englisch |
Maße | 178 x 226 mm |
Gewicht | 640 g |
Themenwelt | Informatik ► Betriebssysteme / Server ► Macintosh / Mac OS X |
Informatik ► Programmiersprachen / -werkzeuge ► Mac / Cocoa Programmierung | |
Informatik ► Software Entwicklung ► Objektorientierung | |
ISBN-10 | 0-321-84284-7 / 0321842847 |
ISBN-13 | 978-0-321-84284-8 / 9780321842848 |
Zustand | Neuware |
Haben Sie eine Frage zum Produkt? |
aus dem Bereich