Что такое std::__detail::_Map_base в отчете о производительности?

Значительная часть времени выполнения моей программы посвящена std::__detail::_Map_base, и я понятия не имею, к чему это относится.

введите здесь описание изображения

Я немного поискал в Интернете, и, похоже, это какая-то структура, но я не вижу, как она занимает время, не говоря уже о почти пятой его части. Что я должен искать, чтобы сократить это время?


person Ben Beatles Levine    schedule 04.06.2017    source источник


Ответы (1)


Я чувствую здесь запах проекта 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. Вы можете себе представить, как это может быть полезно, когда вы обращаетесь к карте много раз в цикле.

Также взгляните на Можно ли использовать C++ 11 "auto" повысить производительность? и убедиться, что вы не допускаете подобных ошибок.

person Curious    schedule 04.06.2017
comment
EECS 281 точно, ты самый крутой. Спасибо, это действительно полезно! - person Ben Beatles Levine; 04.06.2017