【初心者】Java質問・相談スレッド103【大歓迎】at TECH【初心者】Java質問・相談スレッド103【大歓迎】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト622:デフォルトの名無しさん 07/07/15 12:49:22 >>621 スマートとかじゃなくて、それじゃ落第です。動くだけ。性能でなさ杉。 1.もし読み込み対象データのサイズは先にわかるのであれば、1発バルクリ ードしておしまいのはず。そんな遅そうな処理をする必要はないです。 多分こんな感じで。 File target = new File("..."); byte[] buffer = new byte[target.length()]; FileInputStream in = new FileInputStream(target); in.read(buffer); I/O-CPU間のスイッチが発生しないので、速いですよ。 2.サイズがわからないにしても、1バイトずつ読むのはやめなさい。 たとえば100バイトずつ読めば、I/O-CPUスイッチの回数は1/100です。 623:デフォルトの名無しさん 07/07/15 13:41:28 JDBC4.0に対応しているDBってどのくらいある? PostgreSQLが完全対応で、Derbyがβって感じ? 624:デフォルトの名無しさん 07/07/15 13:56:15 >>622 new byte[target.length()] してから new FileInputStream(target) するまでの間に、 ファイルが書き換えられて長さが変わる可能性がある。 in.read(buffer); は確実にbuffer.lengthバイトを読み込む事を保証してないので、 実装依存にしたくなければ明示的にループ使って全部読み込まないとダメ。 I/O-CPU間のスイッチがどのタイミングで入るかは実装依存なので 100バイトずつ読んでもスイッチ回数が本当に1/100になるかは不明。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch