キャッシュ変換
キャッシュ形式のエンコーダとデコーダを書きました。
キャッシュ形式はSQLiteのDBファイルにWinnyのキャッシュブロック1つを1レコードとして保存する形式にしました。
ファイルごとにDBファイルを作るようにして、ヘッダだけは、管理用のインデックスDBへいれる方法。
本当は、1つのDBに全部入れて、特定キャッシュの削除などからある程度守りたかったのですが、排他がかかることを考えるとSQLiteを使っている時点で、この方法は現実的じゃないなーと思ってやめました。
実行は、エンコーダ・デコーダ クラスをワーカースレッドで動かす方法を考えています。
この起動は、キャッシュ管理タスクが制御して。
で、作ってみて思ったのが、やはりSQLiteのINSERTは遅いってこと。
計測したところ、概算では以下のようになりました。
- 1秒間に処理できるサイズ
(テストPCスペック: RAM: 512MB, CPU1.4GHzくらい)
ファイル → キャッシュ: 2MB/sec
キャッシュ → ファイル : 10MB/sec
どっちも遅いのですが、キャッシュに変換するときのほうが5倍遅い。
ここで、ちょっと大きいファイルを考えると萎えてきます。
1GBのファイルをキャッシュに変換するときに、8分以上かかります。
その逆は、2分以内程度。