コンテキスト:Apache POIライブラリを使用して、特定の形式のExcelファイルを読んでいます。各ファイルには1枚のシートと特定のテンプレートしかありません。私はシートを読んだり、値を操作したり、POJOとして保存したり、JAXBの実装を使ってXMLに変換したりすることができます。Java - POI - パフォーマンス
問題:私は現在、いくつかのExcelファイル(たとえば100個)しか読んでいませんが、という1000〜10000個のファイルを読むのに十分な程度にアプリケーションを設計したいと考えていました。 あなたは同じアーキテクチャのための良いアーキテクチャを提案できますか?また、私は一度に10枚を読むためにマルチスレッド(スレッド10スレッドプール)を使用する必要がありますか、それは他のシートと相互にリンクされていない別のデータを持っているという事実を考慮すると悪い設計になります。
注:私は、私有コードであるため、任意のコードスニペットを共有することはできませんが、各シートに50行があり、各行に6から10列のプレーンテキストデータ細胞。 ファイルが小さいので、ファイル全体をメモリにロードしてから処理しています。また、私は、行と列(下のサンプル)
XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream);
sheet = workbook.getSheetAt(0);
//outer for loop using 'i' to iterate all rows
row = sheet.getRow(i);
//inner for loop using 'j' to iterate all columns in a row
value = row.getCell(j)
//use 'value' as and when required
//end inner for loop
//end outer for loop
P.S.を反復処理するためのApache POIのコードを使用していますこれは私の最初の質問ですので、私の質問に変更や改善を提案してください。あなたはPOIで解析するSAXに変更する場合があります並行して多くのことを処理したい場合は、我々は(我々は非常に大きなファイルを持っていたことをやって桁違いにパフォーマンスを高め
おかげで、よろしく、 シド
データを正確に読み取る方法を知っておく必要があります。データをどのように読み込むかをシミュレートするコードを変更することができます(独自のものでは問題ではありません)。 – XtremeBaumer
これらは相互にリンクされていないので、並列処理に非常に適しています。 –
@XtremeBaumerスニペットを追加しました。それが役立つかどうか確認してください。 – phoenixSid