summaryrefslogtreecommitdiffstats
path: root/benchmarks/ts_bench.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks/ts_bench.cpp')
-rw-r--r--benchmarks/ts_bench.cpp64
1 files changed, 12 insertions, 52 deletions
diff --git a/benchmarks/ts_bench.cpp b/benchmarks/ts_bench.cpp
index 3df3371..3dc619e 100644
--- a/benchmarks/ts_bench.cpp
+++ b/benchmarks/ts_bench.cpp
@@ -10,7 +10,8 @@
#include "shard/TrieSpline.h"
#include "query/rangecount.h"
#include "framework/interface/Record.h"
-#include "include/data-proc.h"
+#include "include/file_util.h"
+#include "include/standard_benchmarks.h"
#include <gsl/gsl_rng.h>
@@ -18,60 +19,19 @@
typedef de::Record<uint64_t, uint64_t> Rec;
-typedef de::TrieSpline<Rec> TS;
-typedef de::rc::Query<Rec, TS> Q;
-typedef de::DynamicExtension<Rec, TS, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext;
+typedef de::TrieSpline<Rec> PGM;
+typedef de::rc::Query<Rec, PGM> Q;
+typedef de::DynamicExtension<Rec, PGM, Q, de::LayoutPolicy::TEIRING, de::DeletePolicy::TAGGING, de::SerialScheduler> Ext;
typedef de::rc::Parms<Rec> QP;
-void run_queries(Ext *extension, std::vector<QP> &queries, gsl_rng *rng) {
- size_t total;
- for (size_t i=0; i<queries.size(); i++) {
- auto q = &queries[i];
-
- auto res = extension->query(q);
- auto r = res.get();
- total += r.size();
- }
-
- fprintf(stderr, "%ld\n", total);
-}
-
-size_t g_deleted_records = 0;
-double delete_proportion = 0.05;
-
-void insert_records(Ext *extension, size_t start,
- size_t stop,
- std::vector<int64_t> &records,
- std::vector<size_t> &to_delete,
- size_t &delete_idx,
- bool delete_records,
- gsl_rng *rng) {
- size_t reccnt = 0;
- Rec r;
- for (size_t i=start; i<stop; i++) {
- r.key = records[i];
- r.value = i;
-
- while (!extension->insert(r)) {
- usleep(1);
- }
-
- if (delete_records && gsl_rng_uniform(rng) <= delete_proportion && to_delete[delete_idx] <= i) {
- r.key = records[to_delete[delete_idx]];
- r.value = (int64_t) (to_delete[delete_idx]);
- while (!extension->erase(r)) {
- usleep(1);
- }
- delete_idx++;
- g_deleted_records++;
- }
- }
+void usage(char *progname) {
+ fprintf(stderr, "%s reccnt datafile queryfile", progname);
}
int main(int argc, char **argv) {
if (argc < 4) {
- fprintf(stderr, "ts_bench reccnt datafile queryfile\n");
+ usage(argv[0]);
exit(EXIT_FAILURE);
}
@@ -82,7 +42,7 @@ int main(int argc, char **argv) {
auto extension = new Ext(12000, 12001, 8, 0, 64);
gsl_rng * rng = gsl_rng_alloc(gsl_rng_mt19937);
- auto data = read_sosd_file(d_fname, n);
+ auto data = read_sosd_file<Rec>(d_fname, n);
std::vector<size_t> to_delete(n * delete_proportion);
size_t j=0;
for (size_t i=0; i<data.size() && j<to_delete.size(); i++) {
@@ -95,21 +55,21 @@ int main(int argc, char **argv) {
/* warmup structure w/ 10% of records */
size_t warmup = .1 * n;
size_t delete_idx = 0;
- insert_records(extension, 0, warmup, data, to_delete, delete_idx, false, rng);
+ insert_records<Ext, Rec>(extension, 0, warmup, data, to_delete, delete_idx, false, rng);
extension->await_next_epoch();
TIMER_INIT();
TIMER_START();
- insert_records(extension, warmup, data.size(), data, to_delete, delete_idx, true, rng);
+ insert_records<Ext, Rec>(extension, warmup, data.size(), data, to_delete, delete_idx, true, rng);
TIMER_STOP();
auto insert_latency = TIMER_RESULT();
size_t insert_throughput = (size_t) ((double) (n - warmup) / (double) insert_latency * 1e9);
TIMER_START();
- run_queries(extension, queries, rng);
+ run_queries<Ext, QP>(extension, queries, rng);
TIMER_STOP();
auto query_latency = TIMER_RESULT() / queries.size();