- ベストアンサー
LHAの1ファイル化のスピードアップ
現在、Unlha32.dllを使って複数のファイルを1つにまとめる ソフトをC++で組んでいます。 圧縮は問題ないのですが、各ファイルをメモリに 展開するのに時間がかかってしまい、使用に耐えられません。 頻繁に使用するファイルを圧縮ファイルの前方に持ってきたり、 アルゴリズム指定を変えてみたりしましたが、あまり速度変わらず でした。 Unlha32でメモリロードを素早くできる工夫や、LHA以外のフリー ライセンスのもので、使えそうなライブラリがあれば教えてください。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
圧縮時に「無圧縮」を指定してみてはどうですか? また、圧縮する必要が無いなら「ファイル名」「開始位置」「ファイルサイズ」だけがあれば良いので、独自のファイル構造にしてしまうのも手です。 独自のファイル構造であれば「指定位置にシークして、指定のサイズ分、メモリに読み込むだけ」で良いので、メモリへのロードが「論理的な最高速」に出来ます。
お礼
chie65535さん ありがとうございます。 ヘルプに"無圧縮"のモードがあったので、早速やってみました。 当然サイズが大きくなりまして、しかもスピードは遅くなって しまいました。サイズの大きさが解凍に必要なCPU負荷を 上回ったかもしれません。 当初、自作フォーマットも検討しましたが、万一ファイルが 壊れた場合に、復旧できるファイル数が多い方がいいと考え 見送りすることになりました。 やはり、1ファイル化とスピードアップは両立することが できないのでしょうか?