【初心者】Java質問・相談スレッド112【大歓迎】at TECH
【初心者】Java質問・相談スレッド112【大歓迎】 - 暇つぶし2ch603:594
08/02/21 23:02:25
>>596
ああ、なるほどー。と思って実装してみたら、逆に少し遅くなりました。(データは正しく読めてました)
以下のようなコードを書いてベンチマークしても、やっぱり遅くなってましたorz
public class ReadTest {
public static final int length = 3800 * 2600;
public static int[] data = new int[length];
public static ByteBuffer buffer;
public static void main(String[] args){
try{
buffer = ByteBuffer.allocateDirect(length * 16);
buffer.order(ByteOrder.LITTLE_ENDIAN);
for(int i = 0; i < 20; i++){ read1(); read2(); read2(); read1(); System.out.print(".");}
long t = System.currentTimeMillis();
for(int i = 0; i < 10; i++){ read1(); }
System.out.println("\r\n" + (System.currentTimeMillis() - t) + " ms");
t = System.currentTimeMillis();
for(int i = 0; i < 10; i++){ read2(); }
System.out.println((System.currentTimeMillis() - t) + " ms");
} catch (Exception e){}
}
public static void read1() throws Exception{
FileInputStream fis = new FileInputStream(new File("hoge"));
FileChannel srcChannel = fis.getChannel();
for(int i = 0; i < 4; i++) fis.read(); // ヘッダ
buffer.rewind();
srcChannel.read(buffer); srcChannel.close(); fis.close(); // 読み込み
buffer.clear();
for(int i = 0; i < length; i++){ data[i++] = buffer.getShort() & 0xffff;}
}
/* read2 は読み込み部分が古いほう(省略) */
うーん、不思議ですねえ。 getShort() は遅いんでしょうか。。。
でかい画像を大量に処理していて、読み込みが25%くらい閉めているので、短くしたい・・


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch