fs.readdirSync の速度はどれくらいですか?速度を上げることはできますか?
<p>fs.readdirSync を使用してディレクトリ内のすべてのファイルを再帰的に取得する関数があります。
テストとして実行した小さなディレクトリでは正常に動作しましたが、現在は 100 GB を超えるディレクトリで実行しているため、完了するまでに時間がかかります。これを高速化する方法、またはより良い方法があるかどうかについてのアイデアはありますか?最終的には、テラバイトのデータを含むいくつかのディレクトリでこれを実行する必要があります。 </p>
<pre class="brush:php;toolbar:false;">// ファイルを取得する再帰関数
function getFiles(dir, files = []) {
// fs.readdirSync を使用して、渡されたディレクトリ内のすべてのファイルとディレクトリの配列を取得します
const fileList = fs.readdirSync(dir);
// 渡されたディレクトリとファイル/ディレクトリ名を連結して、ファイル/ディレクトリのフルパスを作成します
for (fileListのconstファイル) {
const name = `${dir}/${file}`;
// 現在のファイル/ディレクトリが fs.statSync を使用してディレクトリであるかどうかを確認します
if (fs.statSync(name).isDirectory()) {
// ディレクトリの場合は、ディレクトリ パスとファイル配列を指定して getFiles 関数を再帰的に呼び出します。
getFiles(名前, ファイル);
} それ以外 {
// ファイルの場合は、ファイル配列へのフルパスをプッシュします
ファイル.push(名前);
}
}
ファイルを返す。
}</pre></p>