Java 文字列の連結という罠(ファイルにゃの読み込み)
Javaにゃで躓いたにゃので、メモメモですにゃん。
テキストファイルを読み込んで、テキストを返すってにゃ処理で、物凄く重たかったにゃのですにゃん。
始めは、文字列にゃの連結にゃを普通にゃににゃってたにゃのですけど、これがどうにゃら駄目でしたにゃ。
String text = ""; BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream( inputFilename ), "SJIS" ), 1024*1024*4 ); String line; while ((line = br.readLine()) != null) { text += line.trim().replaceAll( "//.*", "" ); // コメント削除して文字列追加 } br.close(); return text;
StringBufferを使って書き直したら、めっちゃ早くにゃったですにゃん。
String text = ""; StringBuffer tmp = new StringBuffer( 1024*1024*4 ); BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream( inputFilename ), "SJIS" ), 1024*1024*4 ); String line; while ((line = br.readLine()) != null) { tmp.append( line.trim().replaceAll( "//.*", "" ) ); // コメント削除して文字列追加 } text = tmp.toString(); tmp = null; br.close(); return text;
Stringにゃ連結にゃと10分ぐらいかかってにゃのが、数秒程度にゃに。
にゅぅ、常識にゃんだろうにゃ〜〜。
メモメモがわりにゃに。