1

ファイルの内容を読み取って別のファイルに書き込むプログラムが必要ですが、有効な utf-8 文字である文字のみが必要です。問題は、ファイルが任意のエンコーディングで提供される可能性があり、ファイルの内容がそのようなエンコーディングに対応している場合と対応していない場合があることです。

私はそれが混乱していることを知っていますが、それは私が扱うデータです. 「クリーニング」する必要があるファイルは、数テラバイトにもなる可能性があるため、人間ができる限り効率的なプログラムが必要です。現在、私はPythonで書いたプログラムを使用していますが、100GBをきれいにするのに1週間もかかります.

w_char 関数で文字を読み取り、整数として管理し、範囲外のすべての数値を破棄することを考えていました。これは最適なソリューションですか?

また、C/C++ で読み書きする最も効率的な方法は何ですか?

編集:問題は IO 操作ではありません。質問のその部分は、さらに高速なプログラムを作成するための追加のヘルプとして意図されていますが、実際の問題は、非 UTF 文字をすばやく識別する方法です。また、私はすでにパラタライゼーションと RAM ディスクを試しました。

4

4 に答える 4

0

私によると、あなたの最善の策は並列化です。クリーニングを並列化し、多くのコンテンツを同時にクリーニングできる場合、プロセスはより効率的になります。タスクをマルチスレッド化できる mapreduce など、並列化のためのフレームワークを検討します。

于 2013-06-07T01:18:03.530 に答える
0

Unix/Linux およびその他の POSIX 準拠の OS は、メモリ マップ (mmap) もサポートしています。

于 2013-06-07T01:38:31.137 に答える