static void LoadYcsbData(SingletonVersionDb versionDb, int recordCount) { TransactionExecution txExec = versionDb.MakeTxExec(); for (int i = 0; i < recordCount; ++i) { txExec.Reset(); if (!txExec.Insert(i, YcsbHelper.NewPayload()).IsAborted()) { txExec.Commit(); } } }
static internal YcsbQuery Generate(YCSBDataGenerator gen) { string nextop = gen.NextOperation(); switch (nextop) { case "READ": return(GetRead(gen.NextIntKey())); case "UPDATE": return(GetUpdate( gen.NextIntKey(), YcsbHelper.UpdatePayload())); } throw new Exception($"Unknown generated operation: {nextop}"); }
static BenchResult BenchmarkWithConfigOnce(YcsbConfig config) { // config.Print(); // Console.WriteLine(); var versionDb = YcsbHelper.MakeVersionDb(config.Concurrency); // Console.Write("loading data... "); LoadYcsbData(versionDb, config.RecordCount); // Console.WriteLine("done"); var generator = new YCSBDataGenerator( config.RecordCount, config.ReadRatio, config.Dist, config.ZipfSkew); Func <TransactionExecution, YcsbWorker> workerFactory = txExec => YcsbWorker.Generate( config.WorkerWorkload, config.QueriesPerTx, generator, txExec); // Console.Write("generate workload... "); var benchmark = new YcsbBenchmarkEnv(versionDb, workerFactory); // Console.WriteLine("done"); var result = benchmark.Go(); SingletonVersionDb.DestroyInstance(); return(result); }