c – Boost :: HPC的侵入性
boost :: intrusive库对高性能计算有多好?
我想将容器用于不可复制的不可赋值类.我打算用 正常STL与shared_ptr.我发现boost :: intrusive也可以用于相同的目的.所以我的问题是,他们真的那么高效吗? 如果在具有shared_ptr类型的STL容器和boost :: intrusive之间给出一个选项,您更喜欢哪一个? 解决方法
通常,就内存使用而言,侵入式集合是最有效的.如果你的目标是挤压每一个最后的cpu周期,这是唯一的方法.
考虑一下boost共享指针的列表.创建新对象时会发生以下情况: >从堆分配并初始化的对象 在上文中,有三个内存分配用于创建新对象并将其插入到集合中. 现在考虑使用侵入式列表.对于同样的任务,会发生什么: >分配并初始化一个新对象 这里只发生一次内存分配.由于cpu在使用侵入式集合时会占用更少的内存,因此可以更好地利用cpu缓存,从而减少缓存未命中以及减少内存占用(称为参考原则的位置). 侵入式集合的缺点是必须事先知道对象可以是什么类型以及有多少集合可以同时成为元素.根据我的个人经验,这种额外的前期思考可以使设计更简洁,更简单. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |