0

特定のサイズのファイルを取得する場合、どの操作がより高速に実行されますか? コンテンツ全体を読み取るか、コンテンツをファイルに書き込みます。ファイルを開くモードに対するパフォーマンスの依存関係はありますか。

4

2 に答える 2

2

ファイルの読み書き速度は、言語とは関係ありませんが、使用しているディスク ドライブと関係があります。

いずれかの言語を使用すると、CPU バウンドのアプリケーションで利点が得られます。

「CPUバウンド」と「I/Oバウンド」という用語はどういう意味ですか?

于 2013-05-27T11:03:09.467 に答える
1

読む方が速い場合(またはその逆)、書く必要がある場合は役に立たないという限り、質問はほとんど意味がないので、私は少し驚いています。とにかくやるべきことをやらないといけない。

とはいえ、通常、書き込みは遅くなります。私が「通常」と言ったのは、必ずしも読み書きの速度を直接見ているわけではないからです。

C++ での読み取りと書き込みは、アプリケーション レベルでバッファリングされ、(通常) オペレーティング システム レベルで再びバッファリングされます。したがって、表示される「書き込み速度」は、データをバッファにコピーし、最終的にバッファをオペレーティング システムにフラッシュする速度です。

その詭弁はさておき、書き込みは (通常) 読み取りよりも遅くなります。それがデバイスの動作方法だからです。ハードディスクは完全なクラスターのみを書き込むことができ、ソリッド ステート ディスクはクラスターのグループ全体 (多くの場合、約 512kiB) のみを書き込むことができます。これは、定期的な書き込みには、以前に書き込まれたデータの完全な「単位」を読み取り、それを変更し、完全な単位を書き戻すことが含まれることを意味します。また、(一部のデバイスでは)データが正常に書き込まれたことを確認するために、データを再読み取りする必要がある場合があります。これは明らかに読み取りよりも遅くなければなりません。

明示的に同期を要求しない限り、書き込みは通常、仮想メモリ サブシステムによって遅延して実行されるため、オペレーティング システムは書き込みを大幅に結合することに注意してください。仮想メモリ システムは通常、かなりの量のデータ (通常は 64 ~ 128kiB 程度) を事前にフォールトするため、読み取りについても同じことが言えます。
したがって、読み取り/書き込みが大量でない限り、表示されるタイミングは実際の読み取り/書き込みタイミングに対応していません。

于 2013-05-27T13:10:33.510 に答える