私のプログラムは以下のようにそれをインターリーブ、ファイルを読み込み、Linuxアプリケーションのために読み取ります高速化は
読み込まれるファイルが大きいです。それは4つの部分に分割され、多くのブロックに分割されます。私のプログラムはまずパート1のブロック1を読み込み、パート2のブロック1にジャンプします。次に、パート1のブロック2に戻ります。
テストでパフォーマンスが低下します。私はその理由は、カーネルのページキャッシュ機能がこのような状況では効率的に機能しないと考えているからです。しかし、ファイルが大きすぎてmmap()
になり、ファイルがNFSに置かれています。
どのようにこのような状況で読書をスピードアップできますか?コメントや提案は大歓迎です。
あなたが行ったようにファイルを飛び越えることは、パフォーマンスを圧迫することです。とにかくアルゴリズムをリニアに読み直すことができますか?また、あなたが現在行っているようにNFS上のコンテンツを引き出すのではなく、ファイルを保持するボックスと同じ場所にコードを置くことができますか? – chrisaycock
あなたはファイルをmmapできないと言っていますが、すべてのデータをメモリに読み込むことはできますか? –
@chrisaycock残念ながら、私は標準に従って上記のようにファイルを読み込んで送信する必要があります。多くのテストの結果、NFSはボトルネックではないことがわかりました。 – LiJunjie