浏览代码

ver1 bug fix again

main
李畅 8 个月前
父节点
当前提交
52e7b38f62
共有 2 个文件被更改,包括 49 次插入3 次删除
  1. +28
    -0
      .vscode/tasks.json
  2. +21
    -3
      benchmarks/db_bench_new.cc

+ 28
- 0
.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"
}

+ 21
- 3
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 "readrandom," // Extra run to allow previous compactions to quiesce
"readseq," "readseq,"
"readreverse," "readreverse,"
"fillgivenseq,"
"fillgivenrandom,"
"findkeysbyfield,"
"compact," "compact,"
"readrandom," "readrandom,"
"readseq," "readseq,"
@ -137,6 +140,14 @@ namespace leveldb {
namespace { namespace {
leveldb::Env* g_env = nullptr; 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 { class CountComparator : public Comparator {
public: public:
CountComparator(const Comparator* wrapped) : wrapped_(wrapped) {} CountComparator(const Comparator* wrapped) : wrapped_(wrapped) {}
@ -872,7 +883,11 @@ class Benchmark {
FieldArray field_array = { FieldArray field_array = {
{"1", value.ToString()}, {"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)); batch.Put(key.slice(), Slice(encoded_value));
bytes += encoded_value.size() + key.slice().size(); bytes += encoded_value.size() + key.slice().size();
@ -993,8 +1008,11 @@ class Benchmark {
field_array = { field_array = {
{"1", value.ToString()}, {"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)); batch.Put(key.slice(), Slice(encoded_value));
bytes += encoded_value.size() + key.slice().size(); bytes += encoded_value.size() + key.slice().size();

正在加载...
取消
保存