JbWGY Posted March 31, 2011 Share Posted March 31, 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 Link to comment Share on other sites More sharing options...
moritan Posted March 31, 2011 Share Posted March 31, 2011 as-tu essayé de les mettre en base de données ? Link to comment Share on other sites More sharing options...
JbWGY Posted March 31, 2011 Author Share Posted March 31, 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 ?) Link to comment Share on other sites More sharing options...
chpil Posted April 1, 2011 Share Posted April 1, 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) Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.