Запилил тут сильно оптимизированную функцию поиска строки и штампа времени в базе данных sqlite. В данный момент эта функция расходует 75% процессорного времени. Вопрос, эта функция является оптимизированной в плане того, что сначала идёт выборка по time_t, а потом только по char?
int has_been_used(sqlite3 *db, const char *l_path, time_t epoch)
{
const char *sql = "SELECT 1 FROM files WHERE path = ? AND mtime = ?;";
sqlite3_stmt *stmt;
int rc, exists = 0;
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, NULL);
if (rc != SQLITE_OK)
{
fprintf(stderr, "Failed to prepare statement: %s\n", sqlite3_errmsg(db));
return 0;
}
sqlite3_bind_text(stmt, 1, l_path, -1, SQLITE_STATIC);
sqlite3_bind_int64(stmt, 2, (sqlite3_int64)epoch);
rc = sqlite3_step(stmt);
sqlite3_finalize(stmt);
return rc;
}