아이폰의 db 테이블 테이블에서 약 6,000 개의 행을 가져온 다음 정보를 기반으로 6,000 개의 객체를 생성하고 배열로 채우는 과정을 순환하는 다음과 같은 메소드가 있습니다. Objective-C에서이 sqlite db 쿼리/개체 생성 속도를 어떻게 향상시킬 수 있습니까?
while 루프
다소 느린 내가이 속도를 높일 수있는 방법에 어떤 생각 (내 장치에 그들을 통해 반복 ~ 10 초 소요)?TKS !!!
NSMutableArray *dees = [[NSMutableArray alloc] init];
if(sqlite3_open([database_path UTF8String], &database) == SQLITE_OK) {
const char *sqlStatement = "select cn, gn, df, or, id from doits order by lower(cn)";
sqlite3_stmt *compiledStatement;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &compiledStatement, NULL) == SQLITE_OK) {
//loop through the results and feed them into the array
while(sqlite3_step(compiledStatement) == SQLITE_ROW) {
// Read the data from the result row
NSString *a_cn = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
NSString *a_gn = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
NSString *a_df = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];
NSString *an_or = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 3)];
NSString *ident = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 4)];
DL *dl = [[DL alloc] init];
dl.cn = a_cn;
dl.gn = a_gn;
dl.df = a_df;
dl.or = an_or;
dl.primary_id = [ident intValue];
[dees addObject:dl];
}
}
sqlite3_finalize(compiledStatement);
예, jQuery과 채우려면 6,000 행을 사용하고 있습니다. tableview는 사용자가 검색 상자에 타이핑하여 "실시간"필터링 할 수 있습니다 ....내 검색어에서 검색된 모든 필드는 실시간 검색에서 검색됩니다. 그래서, 내가 틀린 생각을하지 않는다면 (당연히 가능할 수도 있습니다), 처음부터 6,000 개의 행이 모두 필요하다고 생각합니다. 나는 완전히 본격적인 객체가 아닌 "첫 번째 레이어"가 무엇을 의미하는지 확신 할 수 없습니다. NSArrays의 NSArray에 모든 것을 넣는 것이 좋습니다. TKS – user141146
또한 스키마 최적화와 관련하여 "필드 유형"이 무엇을 의미하는지 잘 모르겠습니다. – user141146
6,000 개 요소를 모두 빠르게로드하는 방법은 없습니다. 따라서 한 번에 6,000 개의 모든 요소를로드하지 않는 방법을 찾아야합니다. 컨테이너 클래스를 NSArray보다 더 똑똑하게 만들 수 있으며, 6k 개 요소를 모두로드하지 않고 일부만로드합니다. 검색이 시작되면 컨테이너 클래스는 메모리의 항목에서 요청을 수행 할 수 있는지 또는 데이터베이스에서 더 많은로드가 필요한지 (게으른 검색) 결정할 수 있습니다. 또는 테이블의 모든 열을로드해야합니까, 아니면 요소의 일부만로드하고 나머지는 필요에 따라 검색 할 수 있습니까? – justin