`
david.joe2005
  • 浏览: 3352 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

测试boost multi_index库遇到的性能问题

    博客分类:
  • c++
阅读更多
项目中,需要对一大堆不断变化的数据,动态的更新和排序处理。
就想到用内存数据库。
比较了sqlite、h2、berkeley DB、fastdb、times ten、boost multi_index。

开始认为 速度上,应该是 boost multi_index > fastdb > berkeley DB > sqllite 和h2

实际上同一台机器,测试了 sqlite和boost multi_index,
100万条相同的简单数据分别插入
sqlite 是39微秒一条,boost multi_index 竟然要10毫秒,太让人意外了。怎么说sqlite有sql语句解析的开销,应该sqlite慢一些才合理。

这个结果然我百思不得其解,后来联系了boost开发组。
他们回信说,

I understand you're running your test program in debug mode.If so, invariant-checking mode and safe mode (enabledin your code by defining BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKINGand BOOST_MULTI_INDEX_ENABLE_SAFE_MODE), and in particularthe former, will greatly decrease performance. These aremeant to be used as debugging aids, not in productionmode. Please turn them off and recheck. Also, performanceshould be much better in release mode, both becauseit is release mode after all and because you're not definingthe aforementioned macros in that case.

他的意思是关掉2个宏,去掉安全模式和变量检查,速度就会快。
按他说的重新测试了一下,multi_index 速度为 22微秒一条。
这样的速度才对。

考虑到c++ stl 容器插入有变量拷贝的开销。
如果深度优化的话,极限速度在 10微秒左右,应该是可能的。

手头的应用,multi_index速度就足够。
顺便向大家推荐一下boost multi_index库,一个不错的便捷版本的内存数据库。

0
0
分享到:
评论
1 楼 xianglei 2010-01-11  
不知道对并发支持怎么样啊?

相关推荐

    boost_pi_control_loop_design.rar_boost mathcad_boost pi_boost闭环

    本资料"boost_pi_control_loop_design.rar"聚焦于Boost电路的PI(比例积分)控制器设计,旨在实现稳定的闭环控制系统。Mathcad是一款强大的工程计算软件,它结合了数学计算、可视化和文档编写功能,是进行此类分析的...

    boost_1_74_0.zip

    标题中的"boost_1_74_0.zip"表明这是一个Boost库的特定版本,即1.74.0版。这个版本的Boost是为Visual Studio 2019 (vc142)编译器优化的,包含了适用于x86和x64两种架构的编译版本。 在C++编程中,Boost库是一个极其...

    boost_1_59_0.tar

    boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_0.tar.zip boost_1_59_...

    boost_1_44_0

    每个Boost库组件都经过了严格的测试和优化,确保了其稳定性和性能。"boost_1_44_0"版本虽然相对较老,但仍然在很多项目中被使用,因为它支持的C++版本广泛,且功能丰富。开发者可以根据具体需求,选择合适的Boost库...

    boost_1_78_0编译及使用

    在本文中,我们将详细讨论如何编译和使用Boost_1_78_0版本。 首先,你需要下载Boost的1.78.0版本,这可以通过访问Boost的官方网站完成。下载完成后,你会得到一个名为`boost_1_78_0`的压缩文件,解压到你的工作目录...

    C++ Boost程序库boost_1_35_0

    C++ Boost程序库boost_1_35_0C++ Boost程序库boost_1_35_0C++ Boost程序库boost_1_35_0C++ Boost程序库boost_1_35_0C++ Boost程序库boost_1_35_0C++ Boost程序库boost_1_35_0C++ Boost程序库boost_1_35_0

    Boost_ClosedLoop_boost控制_boost闭环_boost闭环_Boost_boost双闭环.zip

    在这个特定的压缩包文件中,“Boost_ClosedLoop_boost控制_boost闭环_boost闭环_Boost_boost双闭环.zip”包含了与Boost闭环控制相关的源码,这可能是一个用于模拟、设计或分析Boost电源转换器的双闭环控制系统。...

    boost_1_51_0 库

    boost_1_51库 , vc , dev c++ 开发环境编译通过 ...

    boost_1_53_0.zip

    在给定的压缩包文件"boost_1_53_0.zip"中,我们找到了Boost库的版本1.53.0。这个版本发布于2013年,虽然不是最新的,但仍然是许多项目中广泛使用的稳定版本。 Boost库的主要目标是提高C++的性能和功能,使其更符合...

    zvt_boost.rar_BOOST ZVT_Boost_boost zvt_zvt_零电压

    标题中的"zvt_boost.rar_BOOST ZVT_Boost_boost zvt_zvt_零电压"明显提到了与Boost转换器相关的ZVT技术。 **Boost转换器** Boost转换器,又称为升压转换器,是一种直流-直流变换器,能够将输入电压提升到更高的...

    boost_1_32_0库的安装包

    1. **数据结构和算法**:Boost库提供了一些高级的数据结构,如多路选择队列(Multi-Index Containers)、B树(B-Tree)、动态_bitset等。此外,还有各种优化的算法,例如并行算法(Parallel Algorithms)和图算法...

    boost_1_59_0.tar.gz

    这个名为"boost_1_59_0.tar.gz"的压缩包文件,是Boost库的一个特定版本,即1.59.0版。这个版本在发布时是一个流行的选择,因为它引入了许多新特性并修复了一些已知问题,为开发者提供了更稳定的开发环境。 Boost库...

    qt编译boost_1_69库

    qt编译的boost_1_69库,希望能帮助大家,完成之后可以在刚才指定的目录中找到编译好的库。 引用的时候,第一步添加头文件目录 在项目文件*.pro中添加以下信息(如:I:\boost_1_69\bin\include\boost) INCLUDEPATH += F:/...

    boost_1_33_1.rar_ boost_1_33_1.zip_Boost_Boost_1_33_1.zip_boost_

    标题中的"boost_1_33_1.rar_ boost_1_33_1.zip_Boost_Boost_1_33_1.zip_boost_"提到了Boost库的特定版本1.33.1,这是2007年发布的一个稳定版本,包含了众多经过社区广泛测试和验证的库组件。 Boost库的主要特点包括...

    boost_1_79_0源码安装包

    这个"boost_1_79_0源码安装包"是Boost库的第1.79.0版本,专为Windows平台设计。以下将详细介绍如何在Windows环境下编译和安装这个源码包,以及使用Boost库的一些关键知识点。 1. **下载与解压**: 首先,你需要从...

    boost_1_69_0

    "boost_1_69_0"是Boost库的一个特定版本,发布于2019年,包含了从早期版本到1.69.0期间的所有改进和新特性。 1. **多用途工具**: Boost库包含各种用途的组件,如线程管理(Boost.Thread)、智能指针(Boost....

    The Boost C++ Libraries_boost库_birthcng_Boostc++_Boost_

    Boost库的核心理念是提供高质量、经过充分测试且与标准库兼容的C++代码,以促进C++语言和标准库的发展。Boost库的成员经常被接纳为C++标准库的一部分,例如智能指针(shared_ptr, unique_ptr)、正则表达式库、函数...

    boost_1_70_0_ 含编译方法.7z

    boost_1_70_0,可以提供智能指针等非常好用,含有编译方法,默认编译方法是配套VS2017。欢迎使用。

    boost_1_72_0 64位

    在本案例中,"boost_1_72_0 64位"指的是Boost库的特定版本1.72.0,专门为64位Windows系统编译优化。 Boost库包含了大量的组件,如: 1. **算法库**:提供了许多高级的算法,如排序、查找、数学函数等,这些通常在...

    boost_1_60_0.tar.gz

    Boost 1.60版本是这个系列中的一个重要里程碑,它包含了大量经过社区严格测试和优化的库,为开发者提供了更强大、更高效的工具。 Boost库的分类广泛,其中包括: 1. **智能指针**:Boost提供了一套完整的智能指针...

Global site tag (gtag.js) - Google Analytics