시간 프로파일 러는 앱에서 시간이 많이 걸리는 작업이 nib 파일에서 UITableViewCells
을로드하고 있음을 보여줍니다. 가장 비싼 것은 UITableViewCell
에 4KB 이미지를로드하는 것입니다.프로그래밍 방식으로 UITableViewCell을 만들거나 펜촉에서로드하는 것이 더 빠릅니까?
나는 다음과 같은 코드로 펜촉에서 UITableViewCell
로드 오전 :
[[NSBundle mainBundle] loadNibNamed:@"UITableViewCellPortrait" owner:self options:NULL];
cell = portraitCell;
self.portraitCell = nil;
사람이 프로그래밍 방식으로보기를 만들거나 펜촉에서 UITableViewCell
로드의 차이를 비교 했습니까?
편집 :
나는 펜에서부터 UITableViewCell
을로드하고 프로그래밍 방식으로보기를 만드는 반복 실행의 시간 프로필을 비교했습니다. 내 검사는 2 ~ 3 초 사이에 약 10 번 약 두 번을 번갈아 수행했습니다. 각 테스트에서 프로그래밍 방식으로 UITableViewCell
을로드하는 속도는 2 배에서 6 배 빨라진 속도보다 훨씬 빨랐습니다.
누구든지이 결과를 확인할 수 있습니까?
EDIT : nib 파일을 한 번만로드하고 후속 호출에 캐시 된 버전을 사용하도록 nib로드 코드를 업데이트했습니다.
if (self.UITableViewPortaitNib == nil) {
self.UITableViewPortaitNib = [UINib nibWithNibName:@"UITableViewCellPortrait" bundle:[NSBundle mainBundle]];
}
self.UITableViewPortaitNib instantiateWithOwner:self options:NULL];
cell = portraitCell;
self.portraitCell = nil;
은 또한 더 일관된 실행을 만들기 위해 자동화 기기를 사용하고 결과는 여전히로드 UITableViewCells
프로그래밍 펜촉에 대한 UITableViewCells
를로드보다 빠릅니다 좋습니다. 펜촉에서로드 한 UITableViewCells
의 평균 실행 시간은 프로그래밍 방식으로 UITableViewCell
을 생성하는 평균 실행 시간은 프로그래밍 방식으로 50ms 였지만 약 90ms였습니다.
귀하의 펜촉로드 코드를 알려주십시오. –
@robmayoff를 이용해 주셔서 감사합니다. 펜촉을로드하는 코드를 포함하도록 질문을 업데이트했습니다. – Eytan
재미있는 찾기 - 스토리 보드와 프로토 타입 셀을 사용하여 실험을 다시 실행할 수 있습니까? 테이블보기는 백그라운드에서 모든 펜촉을로드합니다. – jrturton