Hi,
 
I found sqlite is kind of slow on windows (2003 server and XP professional). 
Here is what i did:
1) downloaded and installed sqlite3.dll (version 3.6.5).
2) created a MSVC 6.0 C++ projects with the following code, which basically 
runs a list of SQL statments on a opened database:
 
#include <stdio.h>
#include "pctimer.h"
#include "sqlite3.h"
int main(int argc, char** argv)
{
 int ret;
 double start, duration;
 char* error = NULL;
 char* database_name = "test.dat";
 sqlite3* database = NULL;
 ret = sqlite3_open(database_name, &database);
 char* sql_list[] = {
  "create table if not exists t1(f1)",
  "insert into t1 values('a')",
  "select * from t1",
  "drop table if exists t1"
 };
 for (int i = 0; i < 4; i++)
 {
  TIME(ret = sqlite3_exec(database, sql_list[i], NULL, NULL, &error), 1000);
  printf("sql_list[%d] = %d, %f msec\n", i, ret, duration);
 }
 sqlite3_close(database);
 return 0;
}
 
in "pctimer.h"
#define TIME(Statement, Unit) start = pctimer(), Statement, duration = 
(pctimer() - start) * Unit
#include <windows.h>

__inline pctimer_t pctimer()
{
    static LARGE_INTEGER pcount, pcfreq;
    static int initflag;
    if (!initflag)
    {
        QueryPerformanceFrequency(&pcfreq);
        initflag++;
    }
    QueryPerformanceCounter(&pcount);
    return (double)pcount.QuadPart / (double)pcfreq.QuadPart;
}

Here is a typical outputs from the program running in debug mode:
 
sql_list[0] = 0, 115.522582 msec
sql_list[1] = 0, 146.979062 msec
sql_list[2] = 0, 0.152468 msec
sql_list[3] = 0, 127.423370 msec
 
The "create table", "insert into" and "drop table" are slower 
than I expected whereas the "select" is ok (compared to published sqlite 
performance). I tried turning off antivirus but got the same results. Notice 
my constraint is these SQL statements must run one by one, not within a 
transaction.
 
My questions are:
1) are these expected performance on windows?
2) if not, what can be done to improve it?
 
Many thanks in advance.
 
FLX
 


      
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to