gpt4 book ai didi

c++ - 以缓慢的插入性能 boost 多索引

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:41 26 4
gpt4 key购买 nike

我有以下代码(主要遵循此处的第一个示例:http://www.boost.org/doc/libs/1_42_0/libs/multi_index/doc/examples.html))。由于某种原因,只有 10000 次插入到多索引,运行程序需要几分钟。我做错了什么或者这是预期的吗?

struct A  
{
int id;
int name;
int age;
A(int id_,int name_,int age_):id(id_),name(name_),age(age_){}
};


/* tags for accessing the corresponding indices*/
struct id{};
struct name{};
struct age{};

typedef multi_index_container<
A,
indexed_by<
ordered_unique<
tag<id>, BOOST_MULTI_INDEX_MEMBER(A,int,id)>,
ordered_non_unique<
tag<name>,BOOST_MULTI_INDEX_MEMBER(A,int,name)>,
ordered_non_unique<
tag<age>, BOOST_MULTI_INDEX_MEMBER(A,int,age)> >
> A_set;



int main()
{
A_set es;

for (int a = 0; a != 10000; a++) {
es.insert(A(a,a+1,a+2));
}
return 0;
}

最佳答案

你是否有机会在 Debug模式下编译?使用 Visual Studio 2008 中的默认发布配置,它几乎立即完成。如果您在 Debug模式下编译,并且几乎完全按照示例进行操作,包括预处理器内容,并且仍然有这部分:

#ifndef NDEBUG
#define BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING
#define BOOST_MULTI_INDEX_ENABLE_SAFE_MODE
#endif

然后删除/禁用这些定义也将显着加快执行时间。 (在我的机器上至少 180 倍,没有费心让它完成。)我不知道在调试版本中禁用或删除这些东西的后果是什么。

关于c++ - 以缓慢的插入性能 boost 多索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3185672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com