0
サーバーから360Kのデータを受け取り、携帯電話でXMLファイルに変換します。最終ファイルは約1.3Mbです。その後、私はこのファイルを読み込もうとしています。私のGT-S5660では、このプロセスは5時間(!)時間実行されます。正しい結果が得られますが、このプロセスを最適化する方法があるのだろうかと思います。私はそれのiPhone版を持っている、そしてプロセスは5秒未満で完了する。 これは正常な動作ですか?もしそうなら、SQLIteが代わりになりますか?他の要素の回収のたくさんのことで5時間XMLを取得する
FileInputStream fileos;
try {
fileos = openFileInput("TarifsCache" + Constants.VERSION + ".txt");
} catch (FileNotFoundException e) {
return;
}
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db;
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException e) {
return;
}
Document doc;
try {
doc = db.parse(new InputSource(fileos));
} catch (SAXException e) {
return;
} catch (IOException e) {
return;
}
doc.getDocumentElement().normalize();
for (int i = 0;; i++) {
NodeList nodeList = doc.getElementsByTagName("Cache" + i);
Node node = nodeList.item(0);
if (node == null)
break;
Element fstElmnt = (Element) node;
NodeList nameList = fstElmnt.getElementsByTagName("area_ref");
Element nameElement = (Element) nameList.item(0);
nameList = nameElement.getChildNodes();
tarifread.area_ref = Integer.parseInt(((Node) nameList.item(0))
.getNodeValue());
を追っ: はここに私のコードです。
コードをプロファイルし、どの部分が最も長くかかるかを確認する必要があります。 http://developer.android.com/guide/developing/debugging/debugging-tracing.html – inazaruk
を参照してください。 db.parse(...)は単独で5分間実行されます。正規化には25秒かかります。最初のdoc.getElementsByTagName( "Cache" + i)は1分かかります。問題の原因となる単一のコマンドラインはありません – michaelsmith
このフォーラムには誰もいません。 – michaelsmith