50 lines
1.1 KiB
C
50 lines
1.1 KiB
C
// @BAKE gcc -o finalize_reprepare finalize_reprepare.c -lsqlite3
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sqlite3.h>
|
|
|
|
#define DB_NAME "test.db"
|
|
#define ITERATIONS 10000
|
|
|
|
void handle_error(int rc, sqlite3 *db) {
|
|
if (rc != SQLITE_OK) {
|
|
fprintf(stderr, "Error: %s\n", sqlite3_errmsg(db));
|
|
sqlite3_close(db);
|
|
exit(1);
|
|
}
|
|
}
|
|
|
|
void finalize_reprepare_performance() {
|
|
sqlite3 *db;
|
|
sqlite3_stmt *stmt;
|
|
int rc;
|
|
const char *sql = "INSERT INTO test (value) VALUES (?);";
|
|
|
|
rc = sqlite3_open(DB_NAME, &db);
|
|
handle_error(rc, db);
|
|
|
|
rc = sqlite3_exec(db, "CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, value TEXT);", NULL, NULL, NULL);
|
|
handle_error(rc, db);
|
|
|
|
for (int i = 0; i < ITERATIONS; i++) {
|
|
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
|
|
handle_error(rc, db);
|
|
|
|
rc = sqlite3_bind_text(stmt, 1, "test", -1, SQLITE_STATIC);
|
|
handle_error(rc, db);
|
|
|
|
rc = sqlite3_step(stmt);
|
|
if (rc != SQLITE_DONE) handle_error(rc, db);
|
|
|
|
sqlite3_finalize(stmt);
|
|
}
|
|
|
|
sqlite3_close(db);
|
|
}
|
|
|
|
int main() {
|
|
finalize_reprepare_performance();
|
|
return 0;
|
|
}
|