Bonsoir à tous.
Je poste ce sujet car les temps sont difficiles.
Voici le problème : J'ai un fichier de 16000 lignes, chaque ligne étant de la forme suivante => "111:BBE|24". Le programme lit le fichier et est censé enregistré dans un container de type map les informations de ce fichier, la clé étant "111:BBE" de type string et la valeur étant un entier (ici 24). Le souci c'est que, pour lire et enregistrer mes 16000 lignes, le programme met environ 20 ms sur mon ordinateur. Sachant que les autres taches (qui consiste à lire des fichiers aussi long, à les interpréter et effectuer des calculs de toutes sortes) mettent 10 ms. En tout, ces 16000 lignes représentent 66% de temps d'utilisation, et c'est 66% inutiles. Je veux bien 1ms mais pas 20 !!!

Ma question est ainsi la suivante : Comment faire pour éviter autant de temps perdu ???!!!!

J'ai essayé de séparer les deux données (clé et valeur) dans deux vectors, c'est légèrement mieux mais insuffisant.
J'ai essayé d'intégrer les 16000 lignes dans le programme directement, je vous parle pas de l'horreur (je le savais dès le départ, je voulais savoir ce que ca donnais !! )

En gros je suis un peu perdu... un coup de main !!
Merci d'avance.

Voici le code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
map<string,int>PH4_pos;
string str;
char[512] buffer;
FILE *fp = fopen("fichier","r");
 while (!feof(fp))
    {
       fgets(buffer,511,fp);str=buffer;
PH4_pos.insert(pair<string, int>(str.substr(0,8),atoi(str.substr(9))));
    }
 
    fclose(fp);
Je sais pour les puristes,c'est moche désolé !!!
Merci encore !!