github.com/maurycy/go-ipld-prime@v0.6.1/impl/free/justString_test.go (about)

     1  package ipldfree
     2  
     3  import (
     4  	"fmt"
     5  	"runtime"
     6  	"testing"
     7  
     8  	ipld "github.com/maurycy/go-ipld-prime"
     9  )
    10  
    11  func BenchmarkJustString(b *testing.B) {
    12  	var node ipld.Node
    13  	for i := 0; i < b.N; i++ {
    14  		node = String("boxme")
    15  	}
    16  	_ = node
    17  }
    18  
    19  func BenchmarkJustStringUse(b *testing.B) {
    20  	var node ipld.Node
    21  	for i := 0; i < b.N; i++ {
    22  		node = String("boxme")
    23  		s, err := node.AsString()
    24  		_ = s
    25  		_ = err
    26  	}
    27  }
    28  
    29  func BenchmarkJustStringLogAllocs(b *testing.B) {
    30  	memUsage := func(m1, m2 *runtime.MemStats) {
    31  		fmt.Println(
    32  			"Alloc:", m2.Alloc-m1.Alloc,
    33  			"TotalAlloc:", m2.TotalAlloc-m1.TotalAlloc,
    34  			"HeapAlloc:", m2.HeapAlloc-m1.HeapAlloc,
    35  		)
    36  	}
    37  	var m1, m2 runtime.MemStats
    38  	runtime.ReadMemStats(&m1)
    39  	var node ipld.Node = String("boxme")
    40  	runtime.ReadMemStats(&m2)
    41  	memUsage(&m1, &m2)
    42  	sinkNode = node // necessary to avoid clever elision.
    43  }
    44  
    45  var sinkNode ipld.Node