什么是std :: __ detail :: _ Map_base在perf报告中?

时间:2017-06-04 05:53:09

标签: c++ std perf

我的程序运行时的很大一部分专用于std :: __ detail :: _ Map_base,我不知道它指的是什么。

enter image description here

我在互联网上搜索了一下,它似乎是某种形式的结构,但我不知道它是如何占用时间的,更不用说几乎五分之一了。我该怎么做才能减少这段时间?

1 个答案:

答案 0 :(得分:2)

我在这里闻到了EECS 281项目

当我作为本课程的IA时参考,我对此有很多疑问。这只意味着你花了很多时间在地图类型的内部方法中。尝试减少昂贵的副本并重复查找操作。如果您一遍又一遍地访问地图,如下面的代码

if (m[key].something) {
    use(m[key]);
    cout << m[key];
}

尝试将其更改为

auto& value = m[key];
if (value.something) {
    use(value);
    cout << value;
}

这将帮助您从3个昂贵的查找操作转到1个。您可以想象当您在循环中多次访问地图时,这将如何有用。

另请查看Can the use of C++11's 'auto' improve performance?并确保您没有犯错误。