Explorar el Código

增加简单的索引性能测试

pull/2/head
augurier hace 8 meses
padre
commit
51129477ce
Se han modificado 2 ficheros con 37 adiciones y 3 borrados
  1. +36
    -3
      benchmarks/db_bench_FieldDB.cc
  2. +1
    -0
      util/serialize_value.cc

+ 36
- 3
benchmarks/db_bench_FieldDB.cc Ver fichero

@ -63,6 +63,10 @@ static const char* FLAGS_benchmarks =
"readreverse," "readreverse,"
"fill100K," "fill100K,"
"crc32c," "crc32c,"
"CreateIndex,"
"FindKeysByField,"
"QueryByIndex,"
"DeleteIndex,"
"snappycomp," "snappycomp,"
"snappyuncomp," "snappyuncomp,"
"zstdcomp," "zstdcomp,"
@ -635,6 +639,14 @@ class Benchmark {
method = &Benchmark::Compact; method = &Benchmark::Compact;
} else if (name == Slice("crc32c")) { } else if (name == Slice("crc32c")) {
method = &Benchmark::Crc32c; method = &Benchmark::Crc32c;
} else if (name == Slice("CreateIndex")) {
method = &Benchmark::CreateIndex;
} else if (name == Slice("FindKeysByField")) {
method = &Benchmark::FindKeysByField;
} else if (name == Slice("QueryByIndex")) {
method = &Benchmark::QueryByIndex;
} else if (name == Slice("DeleteIndex")) {
method = &Benchmark::DeleteIndex;
} else if (name == Slice("snappycomp")) { } else if (name == Slice("snappycomp")) {
method = &Benchmark::SnappyCompress; method = &Benchmark::SnappyCompress;
} else if (name == Slice("snappyuncomp")) { } else if (name == Slice("snappyuncomp")) {
@ -664,7 +676,7 @@ class Benchmark {
} else { } else {
delete db_; delete db_;
db_ = nullptr; db_ = nullptr;
//DestroyDB(FLAGS_db, Options());
DestroyDB(FLAGS_db, Options());
Open(); Open();
} }
} }
@ -821,7 +833,7 @@ class Benchmark {
options.compression = options.compression =
FLAGS_compression ? kSnappyCompression : kNoCompression; FLAGS_compression ? kSnappyCompression : kNoCompression;
// Status s = DB::Open(options, FLAGS_db, &db_); // Status s = DB::Open(options, FLAGS_db, &db_);
fielddb::DestroyDB(FLAGS_db, options);
//fielddb::DestroyDB(FLAGS_db, options);
db_ = new FieldDB(); db_ = new FieldDB();
Status s = FieldDB::OpenFieldDB(options, FLAGS_db, &db_); Status s = FieldDB::OpenFieldDB(options, FLAGS_db, &db_);
if (!s.ok()) { if (!s.ok()) {
@ -870,7 +882,7 @@ class Benchmark {
{"age", age}, {"age", age},
{"tag", tag} {"tag", tag}
}; };
Slice value = SerializeValue(fields);
std::string value = SerializeValue(fields);
batch.Put(key.slice(), value); batch.Put(key.slice(), value);
bytes += value.size() + key.slice().size(); bytes += value.size() + key.slice().size();
thread->stats.FinishedSingleOp(); thread->stats.FinishedSingleOp();
@ -1078,6 +1090,27 @@ class Benchmark {
g_env->RemoveFile(fname); g_env->RemoveFile(fname);
} }
} }
void CreateIndex(ThreadState* thread) {
db_->CreateIndexOnField("age", write_options_);
}
void FindKeysByField(ThreadState* thread) {
Field f = {"age", "20"};
std::vector<std::string> res;
res = db_->FindKeysByField(f);
}
void QueryByIndex(ThreadState* thread) {
Field f = {"age", "20"};
Status s;
db_->QueryByIndex(f, &s);
}
void DeleteIndex(ThreadState* thread) {
db_->DeleteIndex("age", write_options_);
}
}; };
} // namespace leveldb } // namespace leveldb

+ 1
- 0
util/serialize_value.cc Ver fichero

@ -36,6 +36,7 @@ FieldArray *ParseValue(const std::string& value_str,FieldArray *fields){
res->emplace_back(nameStr, valStr); res->emplace_back(nameStr, valStr);
} else { } else {
std::cout << "name and val not match! From ParseValue" << std::endl; std::cout << "name and val not match! From ParseValue" << std::endl;
assert(0);
} }
nameSlice.clear(); nameSlice.clear();
valSlice.clear(); valSlice.clear();

Cargando…
Cancelar
Guardar