No, the DLL wasn't the issue (heck the entire program is a DLL anyway 
and that's worked well for ages)

We eventually discoverd through profiling the Delphi componants we 
had started using were the slow point, tossed them, and tried someone 
elses version (some stuff adapted by someone called Tim A.) and they 
work MUCH better

It seems the chokepoints where in the wrapper code itself, perhaps in 
the mechanisms calling the various SQLite functions. I'd dig deeper 
but frankly the wrapper we have now lets me get to the bare bones 
easier. 

I am pleasently surprised about SQLites power now, for a large single 
user DB it works nicely.
Sure, when we tossed a further 8 million rows into the DB it is slows 
down, but still ~1 secondish for a 3k select statement

Still trying to wrench every piece of speed I can from the DB, and 
some functions don't seem to be working? (or I am misunderstanding 
them)

For example:

 CREATE UNIQUE INDEX pk ON myTable (Field1, Field2) ON CONFLICT 
REPLACE;

runs but doesn't create the ON CONFLICT part. When you examine the 
schema you see :

CREATE UNIQUE INDEX pk ON myTable (Field1, Field2);

Also any INSERT statement evaluate as if the default is still FAIL

Still not really required, INSERT OR REPLACE works well. Was hoping 
setting the default CONFLICT handeler may speed things up a bit

> I wouldn't think DLL calling overhead would be significant
> when dealing with things as slow (relatively) as a database.
> 
> Is it really necessary for it to be a DLL?
> You might be able to statically link it and remove that overhead.
> Are you using COM or ActiveX to call it? If I remember right
> they had a lot more overhead than a vanilla DLL.
> 
> Sounds like a job for the profiler!


Reply via email to