提交 72c20cc2 编写于 作者: XuanDai's avatar XuanDai

更新README.md

上级 07fe25ad
......@@ -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.
先完成此消息的编辑!
想要评论请 注册