下記のようなコードで、2重ループが発生しており、ここの処理がとても遅いです。
mm.S3Objects
には大体6000個、mm.Photos
には14,000個ぐらいの要素が入っています。
2重ループを高速化する方法をご存知の方がいましたらご教授頂けないでしょうか。
Golang
1for _, v := range mm.S3Keys { 2 wg.Add(1) 3 4 go func(s3Key string) { 5 defer wg.Done() 6 7 for _, vv := range mm.Photos { 8 rep := regexp.MustCompile(`/`) 9 result := rep.Split(s3OKey, -1) 10 userID := result[0] 11 12 rep = regexp.MustCompile(`.`) 13 result = rep.Split(s3Key, -1) 14 fileExt := result[1] 15 tmp := result[0] 16 17 rep = regexp.MustCompile(`/`) 18 result = rep.Split(tmp, -1) 19 fileName := result[1] 20 21 if fileName == vv.FileName { 22 mm.TargetPhotos = append(mm.TargetPhotos, TargetPhoto{UserID: userID, FileName: fileName, FileExt: fileExt}) 23 } 24 } 25 }(v) 26 } 27 wg.Wait()

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。