Je me demandais s'il y avait un moyen d'accélérer la population d'une carte non ordonnée appelée (path_from_startend). La carte non ordonnée a toujours une clé unique.Population C++ de la carte non ordonnée utilisant le multithread
#pragma omp parallel for
for (int i=start_index;i<end_index;++i){
for (int j=start_index;j<end_index;++j){
string key= to_string(unique_locations[i])+to_string(unique_locations[j]);
//dont compute path to itself
if (i==j){
}
else {
vector <unsigned> path = pathbot.FindPath(unique_locations[i],unique_locations[j],turn_penalty);
path_from_startend.insert(make_pair(key,path));
}
}
}
Puisque 'path_from_startend' est partagé entre threads, l'opération d'insertion doit aller dans une section critique. Ensuite, la question est, est-ce que 'pathbot.FindPath' prend beaucoup de temps? Sinon, cela ne sert à rien, car vous remplissez la carte de manière séquentielle (en raison de la section critique). –
Le FindPath est un algorithme A * qui prend un peu de temps (en millisecondes). –
Alors ma réponse devrait vous aider. Je l'ai mis à jour, pour correspondre à votre code. –