2

私は最近、C++ でハフマン エンコーディングの CPU 実装を構築しました。時間を比較するために CUDA で GPU バージョンも構築しましたが、CPU の時間をテストするときに問題に遭遇しました。

大きなファイルを圧縮してストレス テストを行う場合 (たとえば、アルファベットのほぼすべての文字とその他のさまざまな ASCII 文字を含む 97 MB のテキスト ファイル)、私の CPU 実装は、最初の実行時に約 8.3 秒かかります。その後、タイムは 1.7 秒に大幅に短縮されます。注: 文字列のエンコードやファイルへの書き込みではなく、CPU の周波数のカウントのみを計っています。

これがどのようになるかについてのアイデアはありますか?私はすべてのファイル ポインタを閉じており、私の知る限り何もキャッシュすべきではありません。

ソースコードが必要かどうか教えてください、ありがとう。

4

1 に答える 1

5

最初の実行後、ファイルの内容はシステムによってキャッシュされます (そして、すべてのプロセスで共有されます)。そのため、次の実行では、実際にはメモリからファイルを読み取っています。

于 2012-04-30T04:59:24.930 に答える