Я написал программу, которая считывает числа из файла (около 500 000 из них) и вставляет их в структуру данных. числа различны. Я вставив цифры к unordered_map
с другой структурой (с использованием std::make_pair(myNumber, emptyStruct))
.Вставка в unordered_map занимает слишком много времени
А после введения всех чисел, я использую его для поиска только пару сот раз. Я никогда не удалять DS до завершение работы программы
После профилирования я заметил, что операция вставки занимает около 50% времени выполнения. (Существует также и другой код, который выполняется столько же раз, сколько и вставка, но он не работает,
Я подумал, что, возможно, изменение размера требует времени, поэтому я использовал резервную функцию с 500 000, но результаты все те же.
Насколько мне известно, эти DS должны быть вставкой и поиском O (1), а торговля - большой памятью, поэтому я не понимаю, почему требуется столько времени на вставку. Как я могу улучшить свои результаты?
Это O (1) * для каждой вставки *. n вставок все еще O (n). –
Согласен. Это кажется разумным. Вставка будет дорогостоящей. Как сделать это назад: сначала загружайте значения для сравнения, а затем переходите через входной файл. – dmg
Ну, вы можете сделать больше другой обработки, кроме вставки в 'unordered_map', который должен довести 50% -ую часть вниз. Насколько точно «слишком много времени»? Каким будет подходящее количество времени для вставки 500 000 элементов в карту? – user2079303