Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
XuanDai
LevelDB
提交
72c20cc2
L
LevelDB
项目概览
XuanDai
/
LevelDB
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
LevelDB
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
72c20cc2
编写于
9月 13, 2020
作者:
XuanDai
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新README.md
上级
07fe25ad
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
27 addition
and
15 deletion
+27
-15
README.md
README.md
+27
-15
未找到文件。
README.md
浏览文件 @
72c20cc2
...
...
@@ -23,20 +23,25 @@ git clone --recurse-submodules https://github.com/google/leveldb.git
为POSIX构建
快速开始:
mkdir -p构建和& cd构建
cmake -DCMAKE_BUILD_TYPE =发布.. && cmake --build 。
```
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build .
```
Windows版
首先生成Visual Studio 2017项目/解决方案文件:
mkdir构建
cd构建
cmake -G “ Visual Studio 15 ” ..
```
mkdir build
cd build
cmake -G "Visual Studio 15" ..
```
默认默认值将针对x86构建。对于64位运行:
```
cmake -G “ Visual Studio 15 Win64 ” ..
```
要从命令行编译Windows解决方案,请执行以下操作:
```
devenv / build调试leveldb.sln
```
或在Visual Studio中打开leveldb.sln并从内部进行构建。
请参阅CMake文档以及CMakeLists.txt更多高级用法。
...
...
@@ -53,8 +58,9 @@ leveldb项目欢迎您的贡献。leveldb的主要目标是成为可靠且快速
测试:所有更改都必须伴随着新的(或更改的)测试,或关于为什么不需要新的(或更改的)测试的充分说明。
风格一致:该项目符合《 Google C ++风格指南》。为确保更改格式正确,请运行:
```
clang-format -i --style=file <file>
```
提交拉取请求
在接受任何拉取请求之前,作者必须首先在https://cla.developers.google.com/上签署《贡献者许可协议》(CLA)。
...
...
@@ -65,7 +71,7 @@ clang-format -i --style=file <file>
建立
我们使用具有一百万个条目的数据库。每个条目都有一个16字节的密钥和一个100字节的值。基准测试所使用的值压缩到其原始大小的一半左右。
```
LevelDB: version 1.1
Date: Sun May 1 12:11:26 2011
CPU: 4 x Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
...
...
@@ -75,39 +81,44 @@ Values: 100 bytes each (50 bytes after compression)
Entries: 1000000
Raw Size: 110.6 MB (estimated)
File Size: 62.9 MB (estimated)
```
写性能
“填充”基准按顺序或随机顺序创建一个全新的数据库。每次操作后,“ fillsync”基准都会将数据从操作系统刷新到磁盘。其他写入操作会将数据留在操作系统缓冲区高速缓存中一段时间。“覆盖”基准进行随机写入,以更新数据库中的现有密钥。
```
fillseq : 1.765 micros/op; 62.7 MB/s
fillsync : 268.409 micros/op; 0.4 MB/s (10000 ops)
fillrandom : 2.460 micros/op; 45.0 MB/s
overwrite : 2.380 micros/op; 46.5 MB/s
```
上面的每个“ op”对应于单个键/值对的写入。也就是说,随机写入基准测试的速度约为每秒40万次写入。
每个“ fillsync”操作的成本(0.3毫秒)比磁盘搜索(通常为10毫秒)少得多。我们怀疑这是因为硬盘本身正在将更新缓冲在其内存中,并且在将数据写入磁盘之前做出了响应。根据硬盘在断电时是否有足够的电量保存内存,这可能是安全的,也可能是不安全的。
阅读表现
我们列出了正向和反向顺序读取的性能,以及随机查找的性能。请注意,基准测试创建的数据库很小。因此,当工作集适合内存时,该报告将表征leveldb的性能。读取操作系统缓冲区高速缓存中不存在的数据的成本将由从磁盘获取数据所需的一个或两个磁盘搜索决定。写入性能几乎不受工作集是否适合内存的影响。
```
readrandom : 16.677 micros/op; (approximately 60,000 reads per second)
readseq : 0.476 micros/op; 232.3 MB/s
readreverse : 0.724 micros/op; 152.9 MB/s
```
LevelDB在后台压缩其基础存储数据以提高读取性能。经过大量随机写入后,立即完成了上面列出的结果。压缩后的结果(通常会自动触发)更好。
```
readrandom : 11.602 micros/op; (approximately 85,000 reads per second)
readseq : 0.423 micros/op; 261.8 MB/s
readreverse : 0.663 micros/op; 166.9 MB/s
```
读取的高昂成本中有一些来自对磁盘读取块的反复解压缩。如果我们为leveldb提供足够的缓存,以便它可以将未压缩的块保存在内存中,则读取性能将再次提高:
```
readrandom : 9.775 micros/op; (approximately 100,000 reads per second before compaction)
readrandom : 5.215 micros/op; (approximately 190,000 reads per second after compaction)
```
储存库内容
有关更多说明,请参见doc / index.md。有关实现的简要概述,请参见 doc / impl.md。
公共接口位于include / leveldb /
*
。h中。调用方不应在该程序包中包含或依赖任何其他头文件的详细信息。这些内部API可能会更改,恕不另行通知。
头文件指南:
```
include / leveldb / db.h:DB的主界面:从此处开始。
include / leveldb / options.h:控制整个数据库的行为,还控制单个读写的行为。
...
...
@@ -125,3 +136,4 @@ include / leveldb / status.h:状态是从许多公共接口返回的,用于
include / leveldb / env.h:OS环境的抽象。该接口的posix实现位于util / env_posix.cc中。
include / leveldb / table.h,include / leveldb / table_builder.h:大多数客户端可能不会直接使用的低层模块。
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录