0

そのため、現在、c# で大きなファイルを処理するための最善の方法を研究しようとしています。現在、1,000 万行以上のデータを含む大きなファイルがあります。もともと、私のクライアントは、ファイルには数万行が含まれていると言っていたので、以前に各行を新しいファイルに書き込んで、処理のためにインターフェイス エンジンで取得しました。しかし現在、これらのファイルが予想よりもはるかに大きくなり、処理に週末がかかっています。私はロジックを最適化しようとしており、最適な方法を研究しています。複数のスレッドが 1 つのファイルから読み取れるようにすることを検討しましたが、ディスク I/O の機械的なボトルネックにより、改善の余地があまりありません。次の方法は、各行を読み取り、各行 (または行のグループ) を別のスレッドで処理することです。これにより、各行の処理を同時に実行できるため、ある程度の最適化が得られます。一部の人々は、非常に大きなファイルの処理に豊富な経験を持っていることを知っており、私のアプローチについてフィードバックを得るか、この問題に取り組む別の方法を見つけたいと考えていました。

ご意見やご感想をお待ちしております。

4

1 に答える 1

2

しかし現在、これらのファイルが予想よりもはるかに大きくなり、処理に週末がかかっています。

1,000 万行のファイルを読み取るのに週末などはかかりません。そのため、最適化の取り組みは、おそらくファイル I/O ではなく、ファイルから読み取ったデータの処理に集中する必要があります。

どのような処理を行っているかはわかりませんが、たとえば、データベースを更新している場合、更新をトランザクションにまとめることで劇的なパフォーマンスの向上を実現できます (たとえば、10,000 行ごとに 1 つのトランザクション)。

週末中ずっとかかっていることを考えると、CPU バウンドになる可能性は低いので、マルチスレッドが最初に検討すべき手段であるかどうかはわかりません。

さらにヘルプが必要な場合は、データを使用して何をしているかについての詳細情報を提供してください。

于 2012-11-26T22:17:27.830 に答える