#include #include #include #include #include #include int main(int argc, char **argv) { if (argc < 2) { std::println(stderr, "usage: bench "); return 1; } std::println(stderr, "starting benchmark"); boost::sqlite::connection connection{argv[1]}; std::vector keys; std::string line; while (std::getline(std::cin, line)) { keys.push_back(line); } std::println(stderr, "slurped {} keys into memory", keys.size()); auto start = std::chrono::system_clock::now(); auto st = connection.prepare("select kv.value from kv where kv.key=?"); for (const auto &key : keys) { auto row = st.execute({key}); [[maybe_unused]] auto value = row.current().at(0).get_text(); } auto end = std::chrono::system_clock::now(); std::chrono::duration d = end - start; std::println(stderr, "selected {} keys in {} ({})", keys.size(), d, keys.size() / d.count()); return 0; }