2017-06-04 20 views
1

我的程序运行时的显著部分正在致力于为std :: __细节:: _ Map_base,我不知道那是什么引用。什么是性病:: __细节:: _ Map_base在PERF报告?

enter image description here

我周围中搜索互联网上的位,这似乎是某种形式的结构,但我不明白它是如何占用的时间,更何况它的近五分之一。我应该寻找什么来缩短这个时间?

回答

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?,并确保你不会做这样的错误。

+2

EECS 281肯定,你是dopest。谢谢,这真的很有帮助! –