func benchmarkWrites(db storage.Engine, c *Config, points int) int { writesChan := make([]chan []storage.Write, c.threads) for i := range writesChan { writesChan[i] = make(chan []storage.Write, 1) } count := 0 p := points go func() { defer func() { for _, ch := range writesChan { close(ch) } }() for { for _, ch := range writesChan { w := c.MakeBatch() ch <- w l := len(w) count += l p -= l if p <= 0 { return } } } }() wg := sync.WaitGroup{} for i := 0; i < c.threads; i++ { wg.Add(1) go func(idx int) { defer wg.Done() for w := range writesChan[idx] { if err := db.BatchPut(w); err != nil { panic(err) } fmt.Print(".") } }(i) } wg.Wait() fmt.Printf("\n") return count }