Golang копирование файлов занимает слишком много времени - PullRequest
0 голосов
/ 29 января 2019

Я использую следующий код для копирования файлов, который работает нормально. Проблема в том, что когда мы используем этот метод для копирования папок и таких элементов, как проект node_js с узлами node_modules внутри windows , это может занять много времени 40 сек , а в Mac это займет 2 сек .при выполнении трассировки (печати скопированных файлов) мы увидели, что, например, io.copy потребовалось 5 секунд, чтобы скопировать короткий файл readme или файл json, при каждом запуске он получает разметку на разные файлы , файлы небольшого размеракак json readme etch, это не соответствует , в при другом запуске он зависает на разных файлах (если вы работаете в одном проекте).

мы проверили это на 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 дня, и мы не нашли никакого шаблона: (

...