2

1kb のファイルが 100,000 個あります。そして、それらを読み取るプログラム - 本当に遅いです。パフォーマンスを向上させるための私の最良のアイデアは、それらを ramdisk に置くことです。しかし、これは壊れやすいソリューションです。再起動するたびに、RAM ディスクを再度セットアップする必要があります。(そしてファイルのコピーも遅いです)

私の次善の策は、ファイルを連結してそれを操作することです。しかし、それは些細なことではありません。

より良い解決策はありますか?

注: Boost であっても、プログラム内の依存関係を避ける必要があります。

4

2 に答える 2

2

ディスク上に連続したファイルを保存することで最適化できます。

十分な空き領域があるディスクでは、代わりに tar アーカイブを読み取るのが最も簡単な方法です。

それ以外に、'readahead' 用の debian パッケージがあります。

そのツールを使用して、

  1. ソフトウェアの通常の実行をプロファイリングする
  2. アクセスされたファイルの lsit を編集します (先読みによって検出されます)

次に、そのファイル リストを使用して readhead を呼び出すことができます (ファイルがディスク順に並べられるため、スループットが最大化され、シーク時間が最小化されます)。

残念ながら、これらを使用してからしばらく経ちましたので、Google でそれぞれのパッケージにアクセスしていただければ幸いです。

これは私が今見つけたようです:

sudo apt-get install readahead-fedora

幸運を

于 2011-06-18T16:00:28.480 に答える
1

ファイルが静的である場合は、それらをタール化​​してからRAMディスクに配置することに同意します。おそらくTARファイルから直接読み取る方が速いでしょうが、それをテストすることはできます。

編集:: TARの代わりに、 squashfsボリュームを作成してみることもできます。

それをしたくない場合、またはさらにパフォーマンスが必要な場合は、次のようにします。

  1. データをSSDに配置します。
  2. EXT4、XFSなどから始めて、いくつかのFSパフォーマンステストの調査を開始します...
于 2011-06-18T19:34:46.940 に答える