Bonjour,
Je développe en C++ sous Windows 7 64 bits avec code::block et MinGw. Je constate une grande lenteur lorsque je suis en mode debug lorsque je libère un grand nombre de std::vector. L'exemple le plus minimaliste étant le suivant:
Lorsque je lance le même exécutable, en dehors du mode debug, l'exécution est instantané.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 int main() { vector<vector<unsigned char> > vect; vect.resize(300000); for (int i = 0 ; i < 300000 ; i++){ vect[i].resize(8); } vect.clear(); // Les vecteurs contenus dans vect sont libérés, grande lenteur ! (40 secondes!) cout << "Hello world!" << endl; return 0; }
Le même comportement est constaté, quelque soit la version de MinGw (32 ou 64 bits), basé sur GCC 4.1 ou 4.6.1.
Durant cette lenteur, gdb ne consomme pas de processeur, seul mon exécutable le fait.
D'où vient ce comportement? Pourquoi l'ai-je lorsque je monitore l'exécutable avec gdb et pas lorsque je le lance directement (même exécutable)? Je suis un peu désemparé car à cause de cette très lente libération de vecteurs de vecteurs, je prends 5H30 à arriver à un point d'arrêt, pour trouver la source d'un bug à corriger rapidement, très rapidement...
Cordialement,
Benoît (entreet
)
Partager