Practical Instruments - Part 3: Time Profiler | Ray Wenderlich

Learn how to profile your app's performance as well as some strategies for speeding things up.

This is a companion discussion topic for the original entry at

Hi Luke, I couldn’t find wwdc link for Layer prepare transaction in challenge file

Hey @rezafarahani sorry about that. Here’s the link! WWDC14 - Videos - Apple Developer

I’m sorry but this just wasn’t a helpful video. You didn’t drill down into something that was obviously showing as an issue in Instruments. You went through levels of stuff that showed basically no activity to an item you already knew was a “problem” via a WWDC video.

Please rework this to show an actual example that didn’t require existing knowledge of an internal Apple problem.

I am also disappointed with this video. Luke went too fast explaining how to get valuable insights by drilling.
I highly recommend these two WWDC videos :
Using Time Profiler in Instruments WWDC 2016 - Session 418
Improving Your App with Instruments WWDC 2014 - Session 418

@gargoyle @jean-pierre

You guys are totally right that this video only shows how to fix one pretty hard bottleneck in the app. I’ll put together a prequel video that explains how to fix problems that are easier to track down and diagnose.

That being said, the point of this video is to say that, a lot of times hiding the system library calls will mislead you into thinking there’s nothing more to be fixed in your app. For instance, in this demo, if you hide system calls you’ll only see the cell creation and reuse as your bottle neck, which is doing almost no work, but when you use the app on an iPhone 5 you’ll see that it is obviously still very choppy while scrolling and that there must be something more going on.

Indeed the mindset that says the method calls we saw in this trace were “basically no activity” is just what I was aiming to tell people to avoid during their profiling sessions. Everything you see in these traces is significant and potentially informative when you’re trying to improve your app’s responsiveness.

@luke_parham That’s a fair thing to show, but that isn’t a “Time Profiler” video, that’s pointing out an issue to watch for when filtering. I’m glad you’re going to make a video specifically showing how to do time profiling against something related to our application.

Hi Luke, thanks for sharing the wwdc link… your video was amazing…each person needs get used to read time profile in own way and you are here to help us to understand concept not all details(respect to all)

@jean-pierre thanks for useful links

I did learn something about the jpegs and the systems library, I like your refactoring to Async ImageView, as well as your caching implementation (but not the underscore for the private var !) . So thank you!

But I also agree with @gargoyle in the sense that the main focus of the video is blurred, your storyline is sort of contrived, not adapted… Look at the WWDC 2016 session 418. To me Chris Markel is crystal clear.

This is the first video course I am disappointed with. Thanks for the WWDC videos recommended. I have finished and they are really clear, organized and make sense.

Hi luke,

The demo example is not working because of imageurl showing i am unable to handle this.Please do the needful.


Hi, the cast should be: (photoDictionary[“image_url”] as? NSArray)?.firstObject as! String

I was struggling to fix this… thanks for the suggestion :slight_smile: , Wish this comment should be on the Top

Hi Luke,

It seems that this project is not working anymore, as the app(I was using the starter project) immediately crashed once launched.

@luke_parham Can you please help with this when you get a chance? Thank you - much appreciated! :]

The cats pictures are not showing but one picture appears in all cells with the text: “We couldn’t find that photo”

@tonyayoub Does the issue appear in the sample project too?