【问题标题】:What is std::__detail::_Map_base in perf report?性能报告中的 std::__detail::_Map_base 是什么?
【发布时间】:2017-06-04 05:53:09
【问题描述】:

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

我在互联网上搜索了一下,它似乎是某种结构,但我不知道它是如何占用时间的,更不用说它的五分之一了。我应该寻找什么来减少这个时间?

【问题讨论】:

    标签: c++ std perf


    【解决方案1】:

    我在这里闻到了一个 EECS 281 项目?

    作为这门课程的 IA 时的参考,我收到了很多关于此的问题。这只是意味着你的很多时间都花在了 map 类型的内部方法上。尝试减少昂贵的副本和重复的查找操作。如果您像下面的代码一样一遍又一遍地访问地图

    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? 并确保您没有犯这样的错误。

    【讨论】:

    • EECS 281 当然,你是最棒的。谢谢,真的很有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-09
    • 2019-03-15
    • 1970-01-01
    • 2011-07-10
    • 2018-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多