私は巨大なテキストファイル(最大5GBのサイズ)を読み込むアプリケーションに取り組んでいます。現在、fscanfを使用してファイルを読み込んでいます。これは、これまでのところ最速であることがわかったためです。ただし、ファイル全体を読み込むには、まだかなりの時間がかかります。
ファイルからデータを読み込むより速い方法はありますか?
私は巨大なテキストファイル(最大5GBのサイズ)を読み込むアプリケーションに取り組んでいます。現在、fscanfを使用してファイルを読み込んでいます。これは、これまでのところ最速であることがわかったためです。ただし、ファイル全体を読み込むには、まだかなりの時間がかかります。
ファイルからデータを読み込むより速い方法はありますか?
まず、5GBのファイルを1つのステップとしてメモリに読み込むことは強く避けてください。メモリへの影響だけで、このアプローチから離れることができます。代わりに、次のような別のアプローチを取るようにしてください。
NSFileWrapper
(万能薬からはほど遠いですが、上記と組み合わせて使用すると便利です。NSFileWrapper
メモリマッピングを自動的に実行します)を使用してファイルをメモリマップします。パフォーマンスベースラインを取得することから始める必要があります。
time cat thebigfile.dat > /dev/null
それよりもはるかに速くファイルを読み取ることは想像しがたいので、それがあなたのフロアです。
Instrumentsでパフォーマンス分析を確実に実行し、問題が処理ではなく読み取りにあることを確認する必要があります。特に、メモリ割り当ては、特にマルチスレッドアプリでは、予想よりもコストがかかる可能性があります。
上記を調査し、ディスク上のデータを非常に高速に管理する必要がある場合は、dispatch_ioとdispatch_dataを確認してください。これは、高速データ管理のための本当に素晴らしいツールです。ただし、ほとんどの場合、この種の最適化について心配する前に、最初に基本的なアルゴリズムを改善することをお勧めします。