Я пытаюсь оптимизировать часть кода на С++, которая занимает много времени (следующая часть кода занимает около 19 секунд для X объема данных, и я пытаюсь закончить весь процесс менее чем за 5 секунд для того же объема данных - на основе некоторых контрольных показателей, которые у меня есть). У меня есть функция "добавить", которую я написал и скопировал здесь код. Я попытаюсь объяснить как можно больше, что, по моему мнению, необходимо для понимания кода. Пожалуйста, дайте мне знать, если я что-то пропустил.
Следующая функция add называется X раз для X количества записей данных.
void HashTable::add(PointObject vector) // PointObject is a user-defined object
{
int combinedHash = hash(vector); // the function "hash" takes less than 1 second for X amount of data
// hashTableMap is an unordered_map<int, std::vector<PointObject>>
if (hashTableMap.count(combinedHash) == 0)
{
// if the hashmap does not contain the combinedHash key, then
// add the key and a new vector
std::vector<PointObject> pointVectorList;
pointVectorList.push_back(vector);
hashTableMap.insert(std::make_pair(combinedHash, pointVectorList));
}
else
{
// otherwise find the key and the corresponding vector of PointObjects and add the current PointObject to the existing vector
auto it = hashTableMap.find(combinedHash);
if (it != hashTableMap.end())
{
std::vector<PointObject> pointVectorList = it->second;
pointVectorList.push_back(vector);
it->second = pointVectorList;
}
}
}