2

データをファイルに書き込み、そのファイルを分析のために別のプログラムに送信し、そのプロセスを繰り返す必要があるコードを書いています。

ファイルの形式は非常に厳格です。ヘッダーが必要ですが、それらは変更されておらず、約 10 行しかありません。したがって、2つのオプションがあります。

1.ファイルの末尾からヘッダー セクションに到達するまでの行を削除する関数を作成します。

2.古いファイルを削除し、その場所に同じ名前の新しいファイルを作成し、ヘッダー部分を毎回書き換えます。

私の質問はこれです: ファイルの作成と削除に重大な効率上の問題はありますか? 動的関数を作成するよりも、それを作成する方が簡単に思えますがdeleteLines()、関連するオーバーヘッドが気になります。問題があれば、私は C++ で作業しています。

4

3 に答える 3

1

この場合のパフォーマンスは、基盤となるファイル システムなど、さまざまな要因に依存します。そのため、ベンチマークを行ってください。書くのは非常に簡単で、最良の答えが得られます。

Donand Knuth の次の言葉を思い出してください。

約 97% の確率で、わずかな効率性を忘れる必要があります。時期尚早の最適化は諸悪の根源です。

于 2013-06-13T18:41:20.500 に答える
0

古いファイルを削除して新しいファイルを書き込むと、数バイトしか保持されないため、おそらく高速です。既存のファイルを変更する場合、最初にデータを読み取り、次に新しいデータを書き込む必要があります。先に進んで書き込むだけなら、書き込み操作だけです。

ただし、重要な点は、新しいファイルを作成するだけで、おそらく実装と理解がはるかに簡単になるということです。そのため、アプリケーションの速度が十分ではなく、プロファイリングでこの特定の部分がボトルネックであることが判明しない限り、デフォルトの選択にする必要があります。

于 2013-06-13T18:41:41.360 に答える