実現したいこと
現在 XMLファイルを MultipartFile で受け取り、BufferedReaderのreadLineを使用して String にしたのち、
そこから JAXB.unmarshal を使用してオブジェクト変換を行っているのですが、
XMLファイル ⇒ String の過程で処理時間をかなり要しているため改善できないかと考えております。
・現状処理にかかっている時間:1872421 ms(約31分12秒ほど)
・ファイルサイズ:14.5MB
・行サイズ:429314行
・文字列合計サイズ:15256106bytes
・文字数:13835342文字
Java
1// ↓画面からuploadされたファイルを MultipartFile で受け取っています2MultipartFile file 3 4String xmlText = "";5String line = "";6InputStreamReader reader = new InputStreamReader(file.getInputStream());7BufferedReader buf= new BufferedReader(reader);8 9// ファイルデータ読み込み 処理時間計測10long startTime = System.currentTimeMillis();11while((line = buf.readLine()) != null) {12 xmlText += line;13}14 15// 処理後の時刻を取得16long endTime = System.currentTimeMillis();17System.out.println("XML → String処理時間:" + (endTime - startTime) + " ms");
前提
Java にて XMLファイルのデータをStringで読み込み
JAXB.unmarshal を使用してオブジェクト変換を行っているのですが、
ファイルデータを文字列にする過程でかなりの時間を要しているため何とか速度改善をしたいと考えております。
こちらまず Java の処理速度の限界で不可能なのか
それともまだプログラムに改善の余地ありかどうかというところもわかっていないため教えていただけないでしょうか。
試したこと
Java readLine 遅い で検索をかけたところ改善に役立ちそうな情報はみつかりませんでした
補足情報(FW/ツールのバージョンなど)
eclipse(2020-12 (4.18.0))
Java15
Spring(2.4.1)
0 コメント