...

Source file src/github.com/go-logfmt/logfmt/decode-bench_test.go

Documentation: github.com/go-logfmt/logfmt

     1  package logfmt
     2  
     3  import (
     4  	"bytes"
     5  	"testing"
     6  )
     7  
     8  func BenchmarkDecodeKeyval(b *testing.B) {
     9  	const rows = 10000
    10  	data := []byte{}
    11  	for i := 0; i < rows; i++ {
    12  		data = append(data, "a=1 b=\"bar\" ƒ=2h3s r=\"esc\\tmore stuff\" d x=sf   \n"...)
    13  	}
    14  
    15  	b.SetBytes(int64(len(data)))
    16  	b.ResetTimer()
    17  	for i := 0; i < b.N; i++ {
    18  		var (
    19  			dec = NewDecoder(bytes.NewReader(data))
    20  			j   = 0
    21  		)
    22  		for dec.ScanRecord() {
    23  			for dec.ScanKeyval() {
    24  			}
    25  			j++
    26  		}
    27  		if err := dec.Err(); err != nil {
    28  			b.Errorf("got %v, want %v", err, nil)
    29  		}
    30  		if j != rows {
    31  			b.Errorf("got %v, want %v", j, rows)
    32  		}
    33  	}
    34  }
    35  

View as plain text