diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..6aed485 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: g++-11 build active file", + "command": "/usr/bin/g++-11", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}/${fileBasenameNoExtension}" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Task generated by Debugger." + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/benchmarks/db_bench_new.cc b/benchmarks/db_bench_new.cc index c324a17..5daaa03 100644 --- a/benchmarks/db_bench_new.cc +++ b/benchmarks/db_bench_new.cc @@ -53,6 +53,9 @@ static const char* FLAGS_benchmarks = // TODO: findkeysbyfield() "readrandom," // Extra run to allow previous compactions to quiesce "readseq," "readreverse," + "fillgivenseq," + "fillgivenrandom," + "findkeysbyfield," "compact," "readrandom," "readseq," @@ -137,6 +140,14 @@ namespace leveldb { namespace { leveldb::Env* g_env = nullptr; +void EncodeNonIndexValue(const Slice& value, std::string* res) { + enum Type : unsigned char { + kNonIndexValue = 2, + }; + res->push_back(kNonIndexValue); + res->append(value.ToString()); +} + class CountComparator : public Comparator { public: CountComparator(const Comparator* wrapped) : wrapped_(wrapped) {} @@ -872,7 +883,11 @@ class Benchmark { FieldArray field_array = { {"1", value.ToString()}, }; - auto encoded_value = Fields(field_array).Serialize(); + + // auto encoded_value = Fields(field_array).Serialize(); + auto field_str = Fields(field_array).Serialize(); + std::string encoded_value; + EncodeNonIndexValue(field_str, &encoded_value); batch.Put(key.slice(), Slice(encoded_value)); bytes += encoded_value.size() + key.slice().size(); @@ -993,8 +1008,11 @@ class Benchmark { field_array = { {"1", value.ToString()}, }; - } - auto encoded_value = Fields(field_array).Serialize(); + } + + auto field_str = Fields(field_array).Serialize(); + std::string encoded_value; + EncodeNonIndexValue(field_str, &encoded_value); batch.Put(key.slice(), Slice(encoded_value)); bytes += encoded_value.size() + key.slice().size();