Hello Everybody,
I’m facing a strange performance degradation from SQLite 3.10 to 3.13.
The code posted below is around 10 times slower in a release build for 64bit.
Two Visual Studio projects where the problem can be reproduced can be
downloaded here: https://drive.google.com/open?id=0B0DoU-QPegjkcDdkSVl6Rmp6cHM
Does anyone have an idea about the cause?
Best Regards,
Ralf
PS: I know that the code is not optimal. It’s just an example where the
performance problem can be reproduced…
----------------------------------------------------------------------------------------
int main()
{
sqlite3* db;
int rc = sqlite3_open(":memory:", &db);
if (rc != SQLITE_OK)
return 1;
const HANDLE hProc = GetCurrentProcess();
__int64 a, b, c, d;
GetProcessTimes(hProc, (FILETIME*) &a, (FILETIME*) &b, (FILETIME*) &c,
(FILETIME*) &d);
const double startTime = double(c+d) / 10000000.0;
const char createStmt[] = "create table tTest (UsrRowID Text, Column2
Integer, Column3 Real, Column4 Text)";
sqlite3_stmt* pLocalStmt;
const char* zTail;
rc = sqlite3_prepare_v2(db, createStmt, -1, &pLocalStmt, &zTail);
if (rc != SQLITE_OK)
{
puts(sqlite3_errmsg(db));
return 1;
}
rc = sqlite3_step(pLocalStmt);
if (rc != SQLITE_DONE)
return 1;
sqlite3_finalize(pLocalStmt);
const char insertStmt[] = "insert into tTest values (?1, ?2, ?3, ?4)";
for (int i = 0; i < 400000; i++)
{
rc = sqlite3_prepare_v2(db, insertStmt, -1, &pLocalStmt,
&zTail);
if (rc != SQLITE_OK)
return 1;
rc = sqlite3_bind_text(pLocalStmt, 1, "UsrRow_", -1,
SQLITE_TRANSIENT);
rc = sqlite3_bind_int(pLocalStmt, 2, 1);
rc = sqlite3_bind_double(pLocalStmt, 3, 8.5);
rc = sqlite3_bind_text(pLocalStmt, 4, "ExampleText_", -1,
SQLITE_TRANSIENT);
rc = sqlite3_step(pLocalStmt);
if (rc != SQLITE_DONE)
return 1;
sqlite3_finalize(pLocalStmt);
}
sqlite3_close_v2(db);
GetProcessTimes(hProc, (FILETIME*) &a, (FILETIME*) &b, (FILETIME*) &c,
(FILETIME*) &d);
const double processTime = double(c+d) / 10000000.0 - startTime;
printf("Process Time = %f\n", processTime);
puts("Press <Return> to exit");
getchar();
return 0;
}
-----------------
Siemens Industry Software GmbH; Anschrift: Franz-Geuer-Str. 10, 50823 Köln;
Gesellschaft mit beschränkter Haftung; Geschäftsführer: Urban August, Daniel
Trebes; Sitz der Gesellschaft: Köln; Registergericht: Amtsgericht Köln, HRB
84564
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users