我有3D文件解析器,但如果我有一個非常大的文件(大約3 MB)解析西港島線是非常慢的。 (55秒),的Android的OpenGL-ES 3D文件分析器的工作是很慢
我怎樣才能加快步伐?
我有一個簡單的解析器:
InputStream fileIn = resources.openRawResource(resourceID);
BufferedReader buffer = new BufferedReader(new InputStreamReader(fileIn));
while ((line = buffer.readLine()) != null) {
StringTokenizer parts = new StringTokenizer(line, " ");
...
等
編輯1
新與AssetManager
AssetManager assetManager = context.getAssets();
InputStream fileIn = null;
try {
fileIn = assetManager.open(resourceID, AssetManager.ACCESS_RANDOM);
} catch (IOException e) {
Log.e("err0", ""+e);
}
BufferedReader buffer = new BufferedReader(new InputStreamReader(fileIn));
代碼,這是一個快一點,用3 MB文件,我得到38秒。
感謝, 萊斯利
您好賈斯汀!你可以給我一個示例如何使用字節作爲readline字符串?謝謝,Leslie – lacas
這一切都取決於如何寫入文件。舉個例子,假設你知道一行可能的最大長度是200字節。然後,您可以從文件中一次讀取200個字節,並按字節處理數據以尋找換行符來終止您的行。然後你可以保留剩下的字節(比如說20),然後再讀取字節以再次填充緩衝區(現在爲180)。繼續這樣做直到處理完整個文件。再次,這只是一個理論,爲什麼你的解析器很慢。 –
主要思想是避免使用字符串數據,如果你不需要的話。 –