小编Bar*_*ens的帖子

提高shared_ptr解除引用成本

我试图比较原始指针,boost shared_ptr和boost weak_ptr之间的性能.在解除引用部分,我期望shared_ptr和raw_ptr相等,但结果显示shared_ptr大约慢两倍.对于测试,我创建一个数组,其中包含指针或指向int的共享指针,然后在循环中取消引用,如下所示:

int result;
for(int i = 0; i != 100; ++i)
{
  for(int i = 0; i != SIZE; ++i)
    result += *array[i];
}
Run Code Online (Sandbox Code Playgroud)

测试的完整代码可以在这里找到:https: //github.com/coolfluid/coolfluid3/blob/master/test/common/utest-ptr-benchmark.cpp

可以在此处找到没有断言的优化构建的测试时间:http://coolfluidsrv.vki.ac.be/cdash/testDetails.php? test = 145592&build = 7777

感兴趣的值是"DerefShared time"和"DerefRaw time"

我猜测试可能会有某种方面的缺陷,但我没有弄清楚差异来自哪里.分析显示来自shared_ptr的operator*内联,它似乎需要更多时间.我仔细检查了升压断言是否已关闭.

如果有人能解释可能产生的差异,我将非常感激.

其他独立测试:https: //gist.github.com/1335014

c++ boost shared-ptr

13
推荐指数
1
解决办法
2803
查看次数

标签 统计

boost ×1

c++ ×1

shared-ptr ×1