Производительность при создании приложения Objective C на устройстве - PullRequest
0 голосов
/ 01 февраля 2010

У меня проблема с производительностью при сборке приложения на устройстве. Это на самом деле в моей базе данных. У меня есть таблица деталей вина, в которой 2114 наименований вин. Чтобы получить все эти названия вин, я написал этот код в appDelegate:

-(NSMutableArray*)getWineDetails
{ 
   [wineDetailsList removeAllObjects];

   sqlite3_stmt* statement;
   const char *sql = "select *from wineDetails order by name";

   if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) != SQLITE_OK) 
   {
       NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
   }

   while (sqlite3_step(statement) == SQLITE_ROW) 
   {
      primaryKey = sqlite3_column_int(statement, 0);
      //printf("\n primaryKey1 Value:%d",primaryKey);

      wineDetails *wineDets = [[wineDetails alloc] initWithPrimaryKey:primaryKey database:database];    
      [wineDetailsList addObject:wineDets];

      //printf("\n ==========================%d",[wineDetailsList count]);
      [wineDets release];
   }

   sqlite3_finalize(statement);
   printf("\n Inside AppDelegate .....wineDetailsList count:%d",[wineDetailsList count]);
   return wineDetailsList;

}

Я вызываю этот метод в viewWillAppear другого контроллера, где я должен отображать названия вин в табличном представлении.

Код viewWillAppear:

-(void)viewWillAppear:(BOOL)animated
{
    CorkItAppDelegate* appDelegate = (CorkItAppDelegate*)[[UIApplication sharedApplication] delegate];
    winesList = [appDelegate getWineDetails];
    [tableView reloadData];
}

Здесь проблема в том, что когда я собираю его в устройстве, для перехода в контроллер требуется слишком много времени из-за количества данных в базе данных. Что я должен сделать, чтобы избавиться от этой проблемы с производительностью?

Спасибо

Мониш Кумар.

1 Ответ

0 голосов
/ 01 февраля 2010

Так же, как быстрое предложение, вы можете добавить индекс к столбцу имени, который может ускорить выборку. Кроме того, убедитесь, что вы не получаете больше вещей, чем вам нужно.

...