Add concurrency in Tidy remap phase.
authorTom Clegg <tom@tomclegg.ca>
Mon, 14 Jun 2021 15:12:58 +0000 (11:12 -0400)
committerTom Clegg <tom@tomclegg.ca>
Mon, 14 Jun 2021 15:12:58 +0000 (11:12 -0400)
Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom@curii.com>

tilelib.go

index fbdbe6a8e4a6d10c371f365715bf3af1df56dcb1..0606fc3092897eeec57c58553926f7715b811dfb 100644 (file)
@@ -594,18 +594,30 @@ func (tilelib *tileLibrary) Tidy() {
        // Apply remap to genomes and reference sequences, so they
        // refer to the same tile variants using the changed IDs.
        log.Print("Tidy: apply remap")
+       var wg sync.WaitGroup
        for _, cg := range tilelib.compactGenomes {
-               for idx, variant := range cg {
-                       cg[idx] = remap[tagID(idx/2)][variant]
-               }
+               cg := cg
+               wg.Add(1)
+               go func() {
+                       defer wg.Done()
+                       for idx, variant := range cg {
+                               cg[idx] = remap[tagID(idx/2)][variant]
+                       }
+               }()
        }
        for _, refcs := range tilelib.refseqs {
                for _, refseq := range refcs {
-                       for i, tv := range refseq {
-                               refseq[i].Variant = remap[tv.Tag][tv.Variant]
-                       }
+                       refseq := refseq
+                       wg.Add(1)
+                       go func() {
+                               defer wg.Done()
+                               for i, tv := range refseq {
+                                       refseq[i].Variant = remap[tv.Tag][tv.Variant]
+                               }
+                       }()
                }
        }
+       wg.Wait()
        log.Print("Tidy: done")
 }