all repos

clerk @ 1f3a17349e37c8189adb11b8d956acbf3b2080d1

missing tooling for ledger/hledger

clerk/journal/lexer/benchmark_test.go (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
improve loader, 1 day ago
1
package lexer
2
3
import (
4
	"os"
5
	"testing"
6
7
	"olexsmir.xyz/clerk/journal/token"
8
)
9
10
func BenchmarkLexer(b *testing.B) {
11
	b.Run("basic", bench("../../journal/testdata/journals/basic.journal"))
12
	b.Run("personal", bench("../../journal/testdata/journals/actual-personal.journal"))
13
	b.Run("sample", bench("../../journal/testdata/journals/actual-sample.journal"))
14
	b.Run("wow", bench("../../journal/testdata/journals/actual-ledger-input-wow.dat"))
15
	b.Run("1k txns", bench("../../journal/testdata/journals/actual-1ktxns-100accts.journal"))
16
}
17
18
func bench(fpath string) func(b *testing.B) {
19
	src, err := os.ReadFile(fpath)
20
	if err != nil {
21
		panic("loadTestdata: " + err.Error())
22
	}
23
24
	return func(b *testing.B) {
25
		b.ResetTimer()
26
		b.ReportAllocs()
27
		for b.Loop() {
28
			l := New("bench", src)
29
			for l.Next().Type != token.EOF {
30
			}
31
		}
32
	}
33
}