文件名称:unodb:C ++中的自适应基数树
文件大小:107KB
文件格式:ZIP
更新时间:2024-04-03 10:49:58
c-plus-plus optimistic-locking adaptive-radix-tree seqlock C++
解散 介绍 Unodb是一种自适应的基数树实现,在我的操场上完成了各种C ++工具和构想。 我试图描述从中学到的一些知识。 要求 该代码使用SSE4.1内部函数(Nehalem和更高版本)。 这与仅需要SSE2的原始ART纸相反。 注意:由于这是我的个人项目,因此仅支持GCC 10和LLVM 11编译器。 如果您想尝试此操作并需要较低的受支持的编译器版本,请给我留言。 用法 所有声明都存在于unodb命名空间中,在以下内容unodb其省略。 当前唯一支持的密钥类型是std::uint64_t ,别名为key 。 但是,通过用所需的密钥类型实例化art_key类型并根据ART论文对art_key::make_binary_comparable进行特殊化,添加新的密钥类型应该相对容易。 值不透明地处理。 它们作为value_view非所有者对象value_view ,该对象是gsl::s
【文件预览】:
unodb-master
----config.hpp.in(138B)
----.cmake-build.el(2KB)
----qsbr_test_utils.cpp(565B)
----.gitattributes(162B)
----debug_thread_sync.h(1016B)
----.github()
--------linters()
--------workflows()
----pmci-lightstar(462B)
----.gitmodules(332B)
----art_internal.hpp(6KB)
----olc_art.cpp(38KB)
----art_internal.cpp(716B)
----art.hpp(5KB)
----test_art.cpp(21KB)
----.clangd(67B)
----test_art_fuzz_deepstate.cpp(8KB)
----.clang-format(4KB)
----qsbr_test_utils.hpp(241B)
----CMakeLists.txt(26KB)
----art_common.hpp(771B)
----3rd_party()
--------benchmark()
--------GSL()
--------googletest()
----benchmark()
--------micro_benchmark_node16.cpp(6KB)
--------micro_benchmark_node_utils.hpp(38KB)
--------micro_benchmark_node4.cpp(11KB)
--------micro_benchmark_node48.cpp(6KB)
--------micro_benchmark_olc.cpp(3KB)
--------micro_benchmark_mutex.cpp(1KB)
--------micro_benchmark_utils.cpp(868B)
--------micro_benchmark_key_prefix.cpp(12KB)
--------CMakeLists.txt(4KB)
--------micro_benchmark.cpp(10KB)
--------micro_benchmark_utils.hpp(3KB)
--------micro_benchmark_concurrency.hpp(5KB)
--------micro_benchmark_node256.cpp(5KB)
----.travis.yml(6KB)
----test_qsbr.cpp(18KB)
----LICENSE(34KB)
----test_art_mutex_concurrency.cpp(5KB)
----.dir-locals.el(81B)
----optimistic_lock.hpp(12KB)
----README.md(8KB)
----art_internal_impl.hpp(64KB)
----test_olc_art_concurrency.cpp(4KB)
----qsbr.cpp(8KB)
----global.hpp(2KB)
----.gitconfig(122B)
----pmci-unostar(702B)
----critical_section_unprotected.hpp(2KB)
----.codecov.yml(140B)
----.gitignore(357B)
----db_test_utils.hpp(10KB)
----heap.hpp(3KB)
----art_common.cpp(365B)
----olc_art.hpp(7KB)
----db_test_utils.cpp(296B)
----qsbr.hpp(12KB)
----mutex_art.hpp(3KB)
----art.cpp(12KB)