Performance regression with UITableView and variable row heights

Originator:dieter.komendera
Number:rdar://22915261 Date Originated:30-Sep-2015 05:11 PM
Status:Open Resolved:
Product:iOS SDK Product Version:9.0.1 (13A404)
Classification:Performance Reproducible:Always
 
Summary:
There’s a serious performance regression in iOS 9 compared to iOS 8.4 with UITableView and variable row heights, when scrolling to a row with scrollToRowAtIndexPath:atScrollPosition:animated

Steps to Reproduce: (with an iPhone 6)
* Run the attached demo app
* let it insert about 300 rows
* monitor cpu usage

Expected Results:
similar performance and cpu usage on iOS 8.4 and iOS 9.0

Actual Results:
iOS 9 performance is way worse and cpu usage a lot higher

Regression:
This is a regression to iOS 8.4

Notes:
From what I see when profiling with Instruments is that with iOS 9.0.1 -[UITableView scrollToRowAtIndexPath:atScrollPosition:animated:] for some reason recalculates the height for all rows instead of using estimatedRowHeight for cells which are not visible.

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!