J'ai fait un essai hier chez moi et je tombe sur des temps de traitement exagéremment longs. Pourtant je fais à peu près ce qui est dit dans les tutos. Voici mon code:
int main(int argc, char **argv){
sqlite3 *db;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("toto.db", &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
//exit(1);
}
rc = sqlite3_exec(db, "CREATE TABLE tbl ( champ1 int,champ2 int) ", callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
/* initialize random seed: */
//srand ( time(NULL) );
//char cmd[1000];
time_t start,end;
time (&start);
// Compile la requete
sqlite3_stmt* statement;
const char *zTail = 0;
for (int i =0;i<100;i++){
sqlite3_prepare(db,"INSERT INTO tbl (champ1,champ2) VALUES ( ?001, 5 )",1000,&statement,&zTail);
sqlite3_bind_int(statement, 1, i);
// Execute la
rc = sqlite3_step(statement);
// Nettoyage
sqlite3_finalize(statement);
sqlite3_reset(statement);
}
rc = sqlite3_exec(db, "SELECT * FROM tbl", callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
time (&end);
double dif = difftime (end,start);
printf ("It took you %.2lf seconds to do that.\n", dif );
scanf("%d");
time (&start);
for (int i =100;i<200;i++){
sqlite3_prepare(db,"INSERT INTO tbl (champ1,champ2) VALUES ( ?001, 5 )",1000,&statement,&zTail);
sqlite3_bind_int(statement, 1, i);
// Execute la
rc = sqlite3_step(statement);
// Nettoyage
sqlite3_finalize(statement);
sqlite3_reset(statement);
}
rc = sqlite3_exec(db, "SELECT * FROM tbl", callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
time (&end);
dif = difftime (end,start);
printf ("It took you %.2lf seconds to do that.\n", dif );
sqlite3_close(db);
return 0;
}
ca m'affiche
It took you 12.00 seconds to do that.
...
It took you 11.00 seconds to do that.
:-/
Une idée?