Listen

Description

Discussion: Time Profiler

But first: a brief rundown of the Instruments UI

Toolbar

Record/Stop
Pause
Target Selection
Status display
Strategy Selection

CPU data
Instrument data
Thread data

Detail/inspector toggles

Timeline

Plots data along the time your app was sampled
Can be filtered and zoomed
Disclosure arrow can toggle display of just the current run or of all runs in the trace document

Detail

Contents vary by Instrument, but this will generally be a table with some representation of the sampled data

Inspectors

Record Settings
Display Settings
Extended detail (often the heaviest stack trace)

What is Time Profiler?

An Instrument providing sample-based analysis of an application’s activity
Periodically samples the call stack to determine where an app is spending its time

These are instantaneous samples. They don’t track the duration of a function call, but rather how many times when sampled was the application currently in said function call.
No distinction between a fast function called many times and a slow function called few times
Extremely fast functions may not get sampled at all, if they happen to occur in between samples

Provides a detail view listing call trees, optionally separated by thread and/or state, allowing the developer to drive down into calls to identify areas that may need to be optimized

Weight - Percentage of samples in which a function appeared and an aggregate summary of samples (count * sample interval)
Self Weight - Aggregate summary of samples in which the function was at the top of the call stack
Symbol Name - The thing represented in the current row (may be a function, method, closure/block, thread, or app)
Category
Additional columns available:

Count
Self Count
Library

Picks

John

SelfControl

Darryl

WWDC 2016 Session 418 - Using Time Profiler in Instruments

Alternative show title suggestions

Try harder
n squared complexity
my code, vs not my code
expected or unexpected
notion of runs