Конкретный код вставки карты занимает много времени

Я использую вставку карты и нахожу операции в моем проекте. Но только конкретная вставка карты требует больше времени для выполнения. Код ниже

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 тыс. Звонков.

  1. Изменение второй функции обратного вызова только вызывает накладные расходы.! Не первый звонок

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]