fs.readdirSync는 얼마나 빠릅니까? 속도를 높일 수 있나요?
P粉064448449
P粉064448449 2023-09-04 19:48:56
0
1
629
<p>fs.readdirSync를 사용하여 디렉터리의 모든 파일을 재귀적으로 가져오는 함수가 있습니다. 테스트로 실행한 작은 디렉터리에서는 잘 작동했지만 지금은 100GB가 넘는 디렉터리에서 실행 중이고 완료하는 데 시간이 오래 걸립니다. 속도를 높이는 방법이나 더 좋은 방법이 있는지에 대한 아이디어가 있습니까? 결국에는 테라바이트 규모의 데이터가 포함된 일부 디렉터리에서 이 작업을 실행해야 합니다. </p> <pre class="brush:php;toolbar:false;">// 파일을 가져오는 재귀 함수 함수 getFiles(dir, 파일 = []) { // fs.readdirSync를 사용하여 전달된 디렉터리에 있는 모든 파일과 디렉터리의 배열을 가져옵니다. const fileList = fs.readdirSync(dir); // 전달된 디렉터리와 파일/디렉터리 이름을 연결하여 파일/디렉터리의 전체 경로를 생성합니다. for(fileList의 const 파일) { const 이름 = `${dir}/${file}`; // fs.statSync를 사용하여 현재 파일/디렉토리가 디렉터리인지 확인합니다. if (fs.statSync(이름).isDirectory()) { // 디렉토리인 경우 디렉토리 경로와 파일 배열을 사용하여 getFiles 함수를 재귀적으로 호출합니다. getFiles(이름, 파일); } 또 다른 { // 파일인 경우 파일 배열의 전체 경로를 푸시합니다. files.push(이름); } } 파일 반환; }</pre></p>
P粉064448449
P粉064448449

모든 응답(1)
P粉696146205

안타깝게도 이 작업을 수행하는 异步速度较慢。所以我们需要优化你的代码。您可以使用 {withFileTypes:true} 옵션은 2배 더 빠릅니다.

저도 node v20으로 {recursive:true} 选项,但它甚至比您的解决方案还要慢。它不适用于 withFileTypes를 시도했습니다.

읽기 속도가 빠른 더 나은 SSD가 도움이 될 수도 있습니다. 파일 시스템 인덱스에서 파일 항목을 읽는 것으로 추측되지만 하드웨어가 이에 어떤 영향을 미치는지는 잘 모르겠습니다.

으아악

출력:

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿