JbWGY Posté(e) 31 mars 2011 Share Posté(e) 31 mars 2011 Bonsoir à tous Je suis à la recherche d'une méthode pour parser un CSV qui pèse un peu moins d'1mo (40000 lignes) J'utilise un simple bufferedreader pour parser, et il met environ 5 secondes sur mon Milestone 2 mais 20 secondes sur mon Wildfire. J'aimerais grandement réduire ce temps, car le parsing s'execute au lancement de l'application. Connaissez vous des méthodes intéressantes pour cela ? Ou bien me suggérer un autre moyen pour enregistrer les données de mon fichiers (qui ne changeront jamais) ? J'ai testé en essayant de déclarer mes données directement dans un ArrayList, mais il y a une erreur comme quoi je ne peux pas stocker autant de données. Le code que j'utilise : ArrayList<City> cityConfig = new ArrayList<City>(); InputStream is = context.getResources().openRawResource(R.raw.city); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); try { String line; int i = 0; while ((line = reader.readLine()) != null) { if(i > 0){ String[] split = line.split(";"); String zip = split[0]; String s = split[1]; zip = zip.substring(1, zip.length() - 1); s = s.substring(1, s.length() - 1); cityConfig.add(new City(zip, s)); } i++; } } catch (Exception ex) {ex.printStackTrace();} finally { try { is.close(); } catch (Exception e) {e.printStackTrace();} } La lenteur vient-elle de l'utilisation d'un ArrayList ? Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
moritan Posté(e) 31 mars 2011 Share Posté(e) 31 mars 2011 as-tu essayé de les mettre en base de données ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
JbWGY Posté(e) 31 mars 2011 Auteur Share Posté(e) 31 mars 2011 as-tu essayé de les mettre en base de données ? La différence se ferait sentir ? Je ne connais pas le fonctionnement des bases de données avec Android, peut on utiliser des bases de données embarquées ? (ou faut-il utiliser des outils comme H2 pour Java ?) Lien vers le commentaire Partager sur d’autres sites More sharing options...
chpil Posté(e) 1 avril 2011 Share Posté(e) 1 avril 2011 Android embarque de base un moteur de bdd (sqlite) et tout le nécessaire pour manipuler des bdd. Dans ton cas, sous réserver que tes données se prêtent à une mise en base, tu y gagnerais: - le parsing de ton fichier ne serait à faire qu'une seule fois, au premier lancement de l'application - l'occupation mémoire serait réduite (plus besoin d'un ArrayList pour y stocker toutes tes données) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.