github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/cmd/fastcache1e6/stage.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"path/filepath"
     6  	"sync"
     7  	"time"
     8  
     9  	"github.com/angenalZZZ/gofunc/data"
    10  	"github.com/angenalZZZ/gofunc/data/cache/fastcache"
    11  	"github.com/angenalZZZ/gofunc/data/random"
    12  	"github.com/angenalZZZ/gofunc/f"
    13  )
    14  
    15  func Stage() {
    16  	fmt.Println()
    17  	c, l, m := *flagCont, *flagData, *flagTimes
    18  
    19  	p := []byte(random.AlphaNumberLower(l))
    20  	tl := fastcache.NewTimeline(time.Now(), time.Now().Add(time.Hour), time.Hour, data.CurrentDir, 2048)
    21  
    22  	wg := new(sync.WaitGroup)
    23  	wg.Add(c)
    24  	t1 := time.Now()
    25  	for x := 0; x < c; x++ {
    26  		n := m / (x + 1)
    27  		go func(n int) {
    28  			for i := 0; i < n; i++ {
    29  				_, _ = tl.Write(p)
    30  			}
    31  			wg.Done()
    32  		}(n)
    33  	}
    34  	wg.Wait()
    35  	t2 := time.Now()
    36  	tl.Save()
    37  
    38  	fmt.Printf(" every time %d bytes data request \n", l)
    39  	fmt.Printf(" take requested time %s \n", t2.Sub(t1))
    40  	fmt.Printf(" take saved time %s \n", time.Now().Sub(t2))
    41  	s, e := f.ReadFile(filepath.Join(tl.CacheDir, tl.Frames[0].Filename()))
    42  	fmt.Printf(" %s %v \n", s, e)
    43  	if *flagRemove {
    44  		tl.RemoveAll()
    45  	}
    46  }