【发布时间】:2017-06-04 05:53:09
【问题描述】:
我的程序运行时的很大一部分专用于 std::__detail::_Map_base ,我不知道它指的是什么。
我在互联网上搜索了一下,它似乎是某种结构,但我不知道它是如何占用时间的,更不用说它的五分之一了。我应该寻找什么来减少这个时间?
【问题讨论】:
我的程序运行时的很大一部分专用于 std::__detail::_Map_base ,我不知道它指的是什么。
我在互联网上搜索了一下,它似乎是某种结构,但我不知道它是如何占用时间的,更不用说它的五分之一了。我应该寻找什么来减少这个时间?
【问题讨论】:
我在这里闻到了一个 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? 并确保您没有犯这样的错误。
【讨论】: