hi, everyone,
I program in an embaded system: ARM9 soc S3C2410 +Linux 2.4+sqlite
3.3.
All data store in NAND FLASH , the file system is YAFFS .
My question is the function "sqlite3_exec(.....)" take too many
seconds,
the following is my source code, please see the "printf" 's comment,
every "sqlite3_exec(.....)" takes 5 seconds, but how to reduce
the time?
//------------------------------ start of code
#define RECORD_NUM 1
char QueryData(void)
{
struct timeval tpstart,tpend;
float timeuse;
char ErrorFlag=1;
unsigned int di,dj,dk;
DataBuffer[0]='\0'; //DataBuffer is goblal variable
sprintf(sqlstr,"select * from db where isSent=0 limit
%d;",RECORD_NUM);
p(semid);
gettimeofday(&tpstart,NULL);
rc = sqlite3_exec(db, sqlstr, SQLCallBack, 0, &zErrMsg);
gettimeofday(&tpend,NULL);
timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+
tpend.tv_usec-tpstart.tv_usec;
timeuse/=1000000;
printf("sqlite3 select * Used Time:%f\n",timeuse); // print value :5
seconds
v(semid);
sprintf(sqlstr,"update db set isSent=1 where ID in (select ID from
db where isSent=0 limit %d);",RECORD_NUM);
p(semid);
gettimeofday(&tpstart,NULL);
rc = sqlite3_exec(db, sqlstr, 0, 0, &zErrMsg);
gettimeofday(&tpend,NULL);
timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+
tpend.tv_usec-tpstart.tv_usec;
timeuse/=1000000;
printf("sqlite3 update Used Time:%f\n",timeuse); //print value : 5s
v(semid);
}
static int SQLCallBack(void *NotUsed, int argc, char **argv, char
**azColName)
{
struct timeval tpstart,tpend;
float timeuse;
int i;
char tstr[500];
gettimeofday(&tpstart,NULL);
// argv[0] is ID ,no use for server
sprintf(tstr,"'%s',",argv[1]);
strcat(DataBuffer,tstr);
for(i=2; i<argc; i++){
// printf("%s,",argv[i] ? argv[i] : "N");
sprintf(tstr,"%s,",argv[i]);
strcat(DataBuffer,tstr);
}
strcat(DataBuffer,"\n");
gettimeofday(&tpend,NULL);
timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+
tpend.tv_usec-tpstart.tv_usec;
timeuse/=1000000;
printf("SQLCallBack Used Time:%f\n",timeuse); // print value :
0.000280s
return 0;
}
backup
2010-06-17
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users