特定のコードは次のように機能します。
- ディスクからファイルを読み取り、メモリに NSData として保存します
- それを暗号化 (復号化) すると、メモリ内に同じサイズの NSData オブジェクトが追加されます。
- 暗号化 (復号化) されたデータをディスクに書き込む
現在、サイズが 10 または 100 mb のようなファイルの場合、これは問題なく動作し、1 秒あたりの処理バイト数の一貫した速度を維持します (したがって、100 mb ファイルの処理には 10 mb のファイルの 10 倍の時間がかかります)。1.5ギガまで上げると、システムはそのうち2つをメモリに保持する必要があるため、ディスクへのスワップが開始され、速度が劇的に低下します。
だから私はおそらく次のことが可能だと思った:
- ファイルを見て、それを 100 MB のチャンクに分割します (たとえば)
- チャンクを読む
- 暗号化(復号化)します
- 暗号化されたチャンクを出力ファイルに追加します
- プロセス全体が最大 200 MB の RAM を使用するように、元のチャンクを破棄します。
私の質問は:
- それは可能ですか?
- もしそうなら、それはそれを行うための最良の方法ですか?
- もしそうなら、どうやってそれを実装しますか?