Added 'C_C++/finalize_reprepare.c'
This commit is contained in:
49
C_C++/finalize_reprepare.c
Normal file
49
C_C++/finalize_reprepare.c
Normal file
@ -0,0 +1,49 @@
|
||||
// @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;
|
||||
}
|
Reference in New Issue
Block a user