Donc, j'écris un programme, où l'optimisation est un facteur clé. Cependant: lors de l'optimisation, je remarque une fonction que je considérais comme relativement simple, qui prenait trop de temps à fonctionner. D'autant plus que, en comparaison, une fonction beaucoup plus difficile prend beaucoup plus de temps.Des temps d'exécution étranges dans les boucles C++
// Simple function
int get_chunk_index(std::vector<Chunk> chunks, int x, int y) {
glm::vec3 target = glm::vec3(x * 40, 0, y * 40);
for (int i = 0; i < chunks.size(); i++) {
if (chunks[i].trans.GetPos() == target) {
return i;
}
}
return -1;
}
// End simple function
Si vous voulez plus des fonctions, ne hésitez pas à demander, mais il est tout à fait un grand programme, donc je ne peux pas comprendre tout ici.
PS: Les blocs ne font que de 0 à> 40 pouces.
Essayez de retirer 'chunks.size()' de la boucle en l'assignant à une variable. Et que fait 'getPos()'? – Barmar
Avez-vous essayé de remplacer 'std :: vector' par 'const std :: vector &'? Cela devrait sauver un peu en permettant à la copie profonde d'être enlevée. –
VermillionAzure
Lier à pastebin est de mauvais style, car ce n'est pas sous le contrôle de ce site Web, et vous ou pastebin lui-même peut décider de l'enlever plus tard. Publier un échantillon autonome qui peut reproduire le problème que vous décrivez [dans le processus, vous pouvez trouver que vous résolvez le problème] –