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 :

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;
    }
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 :

Y a-t-il une méthode plus efficace ?

Par ailleurs, l'instruction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
String.format(Locale.US, "%.9f", lat)
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 ?

Merci de votre aide.

Pierre