現在、C でディスク ファイル操作 (おそらく一種の dbms) で b+tree と通常のバランス ツリーのパフォーマンス テストを行っています。b+tree は bbst よりも高速であると予想されます。 〇作戦。しかし、いくつかのテストの後、システムがディスク ファイルのキャッシュを行っていることがわかりました。ファイルは完全にメモリに保存されていました (私のメモリ サイズは 32GB です)。ディスク I/O が実行されないため、b+tree は決して bbst よりも高速ではありません。それで、b+tree がパフォーマンスで勝つようにシステム キャッシングを無効にする方法があるのだろうか? O_DIRECT|O_SYNC でファイルを開こうとしました:
int fd = Open("sb.dat", O_DIRECT|O_SYNC|O_CREAT|O_RDWR, S_IRWXU|S_IRWXG|S_IRWXO);
しかし、うまくいかないようです。
getrusage() によって提供される情報を次に示します。
ページの回収: 1359821
ページフォールト: 9