golang复制文件花费太多时间

时间:2019-01-29 20:10:35

标签: windows macos file go

我使用以下代码复制可以正常工作的文件 问题是,当我们使用此方法复制文件夹和诸如node_js项目之类的项目时,其中会包含node_modules 在 windows 中,这可能需要很长时间 40秒,而在Mac中,则需要 2秒。 在进行跟踪(打印复制的文件)时,我们看到例如io.copy花了5秒钟来复制简短的自述文件 或json文件,每次运行时都会s 塞入不同的文件,小型文件(如json自述文件蚀刻) 这是不一致,在不同运行中,它卡在不同文件上(如果您在同一项目上运行)。

我们在3个不同的Windows10机器(1-3岁)和2个不同的MacBook(3岁)上进行了检查 在完全相同的项目上。可以是什么?

func walk(src string, baseDir string, archive *zip.Writer) error {
   return filepath.Walk(src, func(path string, info os.FileInfo, err error) (e error) {
      if err != nil {
         return err
      }

      if info.IsDir() {
         return
      }

      header, err := zip.FileInfoHeader(info)
      if err != nil {
         return err
      }
      if baseDir != "" {
         header.Name = filepath.ToSlash(getRelativePath(path, baseDir))
      }

      header.Method = zip.Deflate
      writer, err := archive.CreateHeader(header)
      if err != nil {
         return err
      }

      file, err := os.Open(path)
      if err != nil {
         return err
      }
      defer func() {
         e = CloseFile(file, e)
      }()

      _, err = io.Copy(writer, file)
      return err
   })
}

我们正在检查将近4天,但没有找到任何模式:(

0 个答案:

没有答案