Why is my iPhone 5 not showing more than 60 frames per second even on a fully open UITableView scroll?

In my application, I worked to get my fps above 60 in the main animation tool by scrolling my tables on the iPhone 5. My GPU didn’t tap, and I couldn’t really identify anything that accelerated it (commented on the situation or deleted the points in the bank).

After hours, I finally got curious and started a new spam app with just the UITableViewController, which splashes out the same cell over and over again. I profiled this with 1000 lines when scrolling, and STILL only in the 50s.

What am I missing here? Right. It doesn’t work easier than displaying this direct table:

Table view

I downloaded the barebones app here .

Can anyone confirm that I'm not crazy?

Update

Is 60fps the maximum you can get on an iPhone? Will the main animation work faster?

+6
source share
3 answers

A few thoughts:

  • I am very sensitive to this, but, in my opinion, the high 50s are excellent.

  • When I compared this using code (which is more accurate than tools), the tabular presentation of plain text on the iPhone 5 was blocked at 60.0 frames per second, so I'm skeptical about your number "high 50". Your performance may be reduced if:

    • If you measured it with tools,

    • Was your test with a debug build; or

    • I launched the application from Xcode, and did not launch it from the device itself.

  • To get a little quality UX sense for different frame rates, I slowly degraded performance by loading images in the background in my table view and then deteriorated even more by performing this expensive process in the foreground, I will show you the gory details, but the bottom line , in my opinion, the frame rate in the mid-50s and above was smooth, silk, but I began to notice (but it was not terrible) the frame rate, as it decreased to 30 -40 frames per second, and when the frame rate decreased up to 5-15 frames per second UX has become completely unacceptable. You should experiment, but with good projects, you should be able to stay in the high 50s, but at least in the mid-50s, probably good.

  • Tools may not give you the most accurate measurement. I can measure it in code. I put fpsLabel in a spare place on my screen, which is updated once per second using CADisplayLink (or if you have custom drawing schemes, you can do your own fps calculations):

     @interface ViewController () <UITableViewDataSource> @property (nonatomic) CFTimeInterval previousTimestamp; @property (nonatomic) NSInteger frameCount; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.previousTimestamp = CFAbsoluteTimeGetCurrent(); CADisplayLink *displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(handleDisplayLink:)]; [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; } - (void)handleDisplayLink:(CADisplayLink *)displayLink; { CFTimeInterval now = CFAbsoluteTimeGetCurrent(); CFTimeInterval elapsed = now - self.previousTimestamp; self.frameCount++; if (elapsed > 1.0) { CGFloat fps = self.frameCount / elapsed; dispatch_async(dispatch_get_main_queue(), ^{ self.fpsLabel.text = [NSString stringWithFormat:@"%.1f fps", fps]; }); self.previousTimestamp = now; self.frameCount = 0; } } 

The bottom line, a combination of more accurate measurement (via code) in the conditions of creating the assembly (i.e. it is not connected to the computer, the assembly is performed without debugging), I think you will find that the performance of the table view on the iPhone 5 is excellent, it is blocked at a speed of 60 frames per second. But even if your user interface drops to the middle of 50 seconds fps, I personally think it's still good.

+8
source

Animation above 60 Hz will be a waste of battery life. The screen does not refresh faster, and your eyes cannot distinguish movement above 60 Hz.

0
source

So, I think the answer here is that my expectations were wrong.

Everything I read seemed to say that you want your application up to 60 frames per second. I did not understand that this is actually a maximum fps, and that in principle you will never get a solid 60 frames per second.

After profiling many other applications in the tools (which I did not understand what I can do with other users' applications from the application store), it seems that most applications (the most well-built applications) look at tables with a high 50 when scrolling. The path was the only exception that I have found so far, which is almost blocked at level 59 or 60, which is unbelievable with what they have.

So it seems that I really should be satisfied with 50 + fps.

0
source

All Articles