clerk/journal/lexer/benchmark_test.go (view raw)
| 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 | } |