github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/data/queue/benchmark_queue_test.go (about)

     1  package queue_test
     2  
     3  import (
     4  	"github.com/angenalZZZ/gofunc/data/random"
     5  	"io/ioutil"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/angenalZZZ/gofunc/data/queue"
    10  )
    11  
    12  // go test -v -cpu=4 -benchtime=15s -benchmem -bench=^BenchmarkQueueEnqueue$ -run ^none$ github.com/angenalZZZ/gofunc/data/queue
    13  func BenchmarkQueueEnqueue(b *testing.B) {
    14  	b.StopTimer()
    15  	// Open/create a queue.
    16  	dataDir, _ := ioutil.TempDir("", "")
    17  	q, err := queue.OpenQueue(dataDir)
    18  	if err != nil {
    19  		b.Error(err)
    20  		return
    21  	}
    22  	defer func() {
    23  		_ = q.Drop()
    24  		_ = q.Close()
    25  		_ = os.RemoveAll(dataDir)
    26  	}()
    27  	//l := 1024 // every time 1kB data request: cpu=4 70k/qps 8ms/op
    28  	l := 128 // every time 128B data request: cpu=4 75k/qps 8ms/op
    29  	p := []byte(random.AlphaNumberLower(l))
    30  	b.StartTimer()
    31  	for i := 0; i < b.N; i++ {
    32  		// Enqueue an item.
    33  		_, err := q.Enqueue(p)
    34  		if err != nil {
    35  			b.Error(err)
    36  			return
    37  		}
    38  	}
    39  }