programmerZhou / gotree

0 stars 0 forks source link

目录遍历效率过低 #2

Open xbee opened 7 years ago

xbee commented 7 years ago

目录遍历效率过低

programmerZhou commented 7 years ago

多高,我不敢说,请问如何评价效率太低。

programmerZhou commented 7 years ago

我调用的是filepath中的wolk函数,是递归实现的深度优先的算法。

   349  // walk recursively descends path, calling w.
   350  func walk(path string, info os.FileInfo, walkFn WalkFunc) error {
   351      err := walkFn(path, info, nil)
   352      if err != nil {
   353          if info.IsDir() && err == SkipDir {
   354              return nil
   355          }
   356          return err
   357      }
   358  
   359      if !info.IsDir() {
   360          return nil
   361      }
   362  
   363      names, err := readDirNames(path)
   364      if err != nil {
   365          return walkFn(path, info, err)
   366      }
   367  
   368      for _, name := range names {
   369          filename := Join(path, name)
   370          fileInfo, err := lstat(filename)
   371          if err != nil {
   372              if err := walkFn(filename, fileInfo, err); err != nil && err != SkipDir {
   373                  return err
   374              }
   375          } else {
   376              err = walk(filename, fileInfo, walkFn)
   377              if err != nil {
   378                  if !fileInfo.IsDir() || err != SkipDir {
   379                      return err
   380                  }
   381              }
   382          }
   383      }
   384      return nil
   385  }