Почему unordered_map и map дают одинаковую производительность?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему unordered_map и map дают одинаковую производительность?

Сообщение Anonymous »

Вот мой код: мои unordered_map и map ведут себя одинаково и выполняются одинаково. Я что-то упустил в этих структурах данных?
Обновление: я изменил свой код на основе приведенных ниже ответов и комментариев. Я удалил строковую операцию, чтобы уменьшить влияние на профилирование. Кроме того, сейчас я измеряю только функцию find(), которая в моем коде занимает почти 40 % ресурсов ЦП. В профиле видно, что unordered_map работает в 3 раза быстрее, однако есть ли другой способ сделать этот код быстрее?
#include
#include
#include

struct Property {
int a;
};

int main() {
printf("Performance Summery:\n");
static const unsigned long num_iter = 999999;

std::unordered_map myumap;
for (int i = 0; i < 10000; i++) {
int ind = rand() % 1000;
Property p;
p.a = i;
myumap.insert(std::pair (ind, p));
}

clock_t tStart = clock();
for (int i = 0; i < num_iter; i++) {
int ind = rand() % 1000;
std::unordered_map::iterator itr = myumap.find(ind);
}

printf("Time taken unordered_map: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);

std::map mymap;
for (int i = 0; i < 10000; i++) {
int ind = rand() % 1000;
Property p;
p.a = i;
mymap.insert(std::pair (ind, p));
}

tStart = clock();
for (int i = 0; i < num_iter; i++) {
int ind = rand() % 1000;
std::map::iterator itr = mymap.find(ind);
}

printf("Time taken map: %.2fs\n", (double)(clock() - tStart)/CLOCKS_PER_SEC);
}

Вывод здесь
Performance Summary:
Time taken unordered_map: 0.12s
Time taken map: 0.36s


Подробнее здесь: https://stackoverflow.com/questions/392 ... erformance
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»