Я использую вставку карты и нахожу операции в моем проекте. Но только конкретная вставка карты требует больше времени для выполнения. Код ниже
std::map<ThreadID,int>::iterator itr1 = paddingMap->m_map.find(threadID);
if (itr1 != paddingMap->m_map.end())
itr1->second = paddingSize;
else
paddingMap->m_map.insert(pair<ThreadID,int>(threadID,paddingSize));
Вышеуказанные строки находятся в функции обратного вызова, которая будет вызываться много раз. Без этих строк это занимает 150 мс, а с этим фрагментом кода — 2350 мс. Но я использовал ту же карту в другом месте, где она не требует больших накладных расходов.
В чем проблема в этом?
Обновить:
1. Мой текущий пример имеет только один поток. (Следовательно, номер пары в карте только один).
2. Значение в паре модифицируется из двух функций обратного вызова, которые синхронизируются.
3. Количество звонков будет около 80 тыс. Звонков.
Задача ещё не решена.