Ускорение обхода ОС - PullRequest
       13

Ускорение обхода ОС

0 голосов
/ 14 января 2020

Я создал программу, которая рекурсивно сканирует мои жесткие диски на наличие файлов.

На моем P C имеется девять дисков, и самый сложный диск - это диск ОС / программ, C: каталог. Конечно, сканирование занимает гораздо больше времени, чем на любом другом моем диске.

Кто-нибудь знает какие-нибудь хитрости, которые позволили бы мне сканировать этот конкретный диск c более эффективно, но так же тщательно?

Я знаю, что могу кешировать результаты в виде дерева, чтобы ускорить последующее сканирование этого диска, но возможно ли каким-либо образом ускорить начальное сканирование?

async function scan(path, exts, persist) {
  try {
    const stats = await fsp.stat(path)
    if (stats.isDirectory()) {
      const
        childPaths = await fsp.readdir(path),
        promises = childPaths.map(childPath => scan(join(path, childPath), exts)),
        results = await Promise.all(promises)
      return [].concat(...results)
    } else if (stats.isFile()) {
      const fileExt = extname(path).replace('.', '')
      if (exts.includes(fileExt) && !path.includes('$RECYCLE.BIN')) {
        return {
          "path": path,
          "root": parse(path).root,
          "name": basename(path, fileExt).slice(0, -1),
          "type": fileExt,
          "size": stats.size
        }
      }
    }
    return []
  }
  catch (error) {
    console.error(error)
    return []
  }
}
...