キャッシュ変換

キャッシュ形式のエンコーダとデコーダを書きました。
キャッシュ形式は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分以内程度。