From 659696bb65396d81d3552590c8d56f1849144db1 Mon Sep 17 00:00:00 2001 From: wangboo <5417808+wangboa@user.noreply.gitee.com> Date: Wed, 21 Dec 2022 21:05:01 +0800 Subject: [PATCH] add next stop jobs, add #[inline] notes to some short functions --- README.md | 28 +++++++++++++++++++++++----- src/util/arena.rs | 1 + src/util/crc.rs | 2 ++ src/util/slice.rs | 8 ++++++++ 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6b9b6ff..5d05fc2 100644 --- a/README.md +++ b/README.md @@ -40,21 +40,39 @@ LSM tree 是许多 KV型或日志型数据库所依赖的核心实现,例如Bi ## RoadMap 1. 1.0.0 版本, 完成 util 相关的内容 - | 功能模块 | 完成人 | 进度 | |-------------------------------|-----------------|------| -| Arena (Memory Management) | wangboo | | +| Arena (Memory Management) | wangboo | 100% | | bloom | fengyang | 10% | | Cache | colagy | | | Coding (Primitive Type SerDe) | colagy | | | Comparator | fengyang | 90% | -| CRC | wangboo、lxd5866 | | +| CRC | wangboo、lxd5866 | 100% | | Env | lxd5866 | | | filter_policy | fengyang | 10% | | Hash | fengyang | 100% | | Histgram | kazeseiriou | 100% | -| loging | | | +| loging | | | | MutexLock | kazeseiriou | 100% | | Random | colagy | | | Status | fengyang | 100% | -| Slice | wangboo | | \ No newline at end of file +| Slice | wangboo | 100% | + +2. 1.1.0 版本, 完成基础零部件 + +| 功能模块 | 完成人 | 进度 | +|------------------|-----|-----| +| skiplist | 未认领 | | +| MemTableIterator | 未认领 | | +| MemTable | 未认领 | | +| LogReader | 未认领 | | +| LogWriter | 未认领 | | +| TableCache | 未认领 | | +| FileMetaData | 未认领 | | +| VersionEdit | 未认领 | | +| VersionSet | 未认领 | | +| ReadOptions | 未认领 | | +| WriteOptions | 未认领 | | +| WriteBatch | 未认领 | | + +3. 1.2.0 版本, 完成核心组件 \ No newline at end of file diff --git a/src/util/arena.rs b/src/util/arena.rs index 611053b..3f46dcb 100644 --- a/src/util/arena.rs +++ b/src/util/arena.rs @@ -58,6 +58,7 @@ impl Arena { return self.allocate_fallback(bytes, align); } + #[inline] pub fn memory_usage(&self) -> usize { self.memory_usage } diff --git a/src/util/crc.rs b/src/util/crc.rs index c0f8b34..cf7918b 100644 --- a/src/util/crc.rs +++ b/src/util/crc.rs @@ -240,6 +240,8 @@ const K_STRIDE_EXTENSION_TABLE3: [u32; 256] = [ /// 可以被计算 crc 值的特质 /// 默认实现了 &[T], Vec[T], Slice, &str, String pub trait AsCrc { + + #[inline] fn as_crc(&self) -> u32 { self.as_crc_extend(0) } diff --git a/src/util/slice.rs b/src/util/slice.rs index c9ddf7f..7c0bbb3 100644 --- a/src/util/slice.rs +++ b/src/util/slice.rs @@ -14,6 +14,7 @@ extern { impl Default for Slice { /// 构造一个空的 Slice + #[inline] fn default() -> Self { Self { data: Vec::new() @@ -24,6 +25,7 @@ impl Default for Slice { impl Slice { /// 从 &mut [u8] 转到 Slice, 这里存在内存拷贝开销 + #[inline] pub fn from_buf(buf: &[u8]) -> Self { Self { data: buf.to_owned() @@ -95,6 +97,7 @@ impl<'a> Slice { impl From for String { /// 将 Slice 内数据的所有权移交给 String + #[inline] fn from(s: Slice) -> Self { unsafe { String::from_utf8_unchecked(s.data) @@ -103,12 +106,14 @@ impl From for String { } impl From for Vec { + #[inline] fn from(s: Slice) -> Self { s.data } } impl > From for Slice { + #[inline] fn from(r: R) -> Self { Self { data: Vec::from(r.as_ref()) @@ -118,6 +123,7 @@ impl > From for Slice { impl PartialEq for Slice { /// 判断两个 Slice 是否相同 + #[inline] fn eq(&self, other: &Self) -> bool { return self.size() == other.size() && unsafe { memcmp( @@ -158,6 +164,7 @@ impl core::ops::Index for Slice { type Output = u8; /// 获取某个下标的数据 + #[inline] fn index(&self, index: usize) -> &Self::Output { assert!(index < self.size()); &(**self)[index] @@ -168,6 +175,7 @@ impl Deref for Slice { type Target = [u8]; /// Slice 解引用到 &[u8] + #[inline] fn deref(&self) -> &Self::Target { &*self.data } -- Gitee