Bonjour à toutes et à tous,
Dans une application, je souhaite enregistrer un fichier XML. Pour ce faire, je construit une chaîne composée des différentes informations puis j'enregistre cette chaîne. Le code est le suivant pour la formation de la chaîne :
Sur mon Galaxy S2, pour 640 points (j de 0 à 639) cette procédure me prend 6 secondes ! Mais ce qui m'a étonné le plus est que ce qui consomme le plus de temps (4 secondes sur les 6) est le fait d'allonger la chaîne, c'est-à-dire de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 for (int j = 0; j < ptsTrk.length; j++) strTrk = strTrk+trkGPX(ptsTrk[j].lat, ptsTrk[j].lon, ptsTrk[j].alti, ptsTrk[j].date); private static String trkGPX(double lat, double lon, double ele, String dt) { minmax(lat, lon); String str = "<trkpt lat=\""+String.format(Locale.US, "%.9f", lat)+"\" lon=\""+String.format(Locale.US, "%.9f", lon)+"\">" +"<ele>"+String.format(Locale.US, "%.6f", ele)+"</ele>" +"<time>"+dt+"</time>" +"</trkpt>"; return str; } private static void minmax(double lat, double lon) { if (lat < minLat) minLat = lat; else if (lat > maxLat) maxLat = lat; if (lon < minLon) minLon = lon; else if (lon > maxLon) maxLon = lon; }
Y a-t-il une méthode plus efficace ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part strTrk = strTrk + ...
Par ailleurs, l'instruction :
prend donc à elle seule prés de 2/(640 x 3) soit environ 1 milliseconde, ce qui me semble énorme. Y a-t-il une méthode de conversion plus rapide ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part String.format(Locale.US, "%.9f", lat)
Merci de votre aide.
Pierre
Partager