1// Copyright 2015 Google Inc. All rights reserved
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package kati
16
17import "testing"
18
19func BenchmarkFuncStrip(b *testing.B) {
20	strip := &funcStrip{
21		fclosure: fclosure{
22			args: []Value{
23				literal("(strip"),
24				literal("a b  c "),
25			},
26		},
27	}
28	ev := NewEvaluator(make(map[string]Var))
29	var buf evalBuffer
30	b.ReportAllocs()
31	b.ResetTimer()
32	for i := 0; i < b.N; i++ {
33		buf.Reset()
34		strip.Eval(&buf, ev)
35	}
36}
37
38func BenchmarkFuncSort(b *testing.B) {
39	sort := &funcSort{
40		fclosure: fclosure{
41			args: []Value{
42				literal("(sort"),
43				literal("foo bar lose"),
44			},
45		},
46	}
47	ev := NewEvaluator(make(map[string]Var))
48	var buf evalBuffer
49	b.ReportAllocs()
50	b.ResetTimer()
51	for i := 0; i < b.N; i++ {
52		buf.Reset()
53		sort.Eval(&buf, ev)
54	}
55}
56
57func BenchmarkFuncPatsubst(b *testing.B) {
58	patsubst := &funcPatsubst{
59		fclosure: fclosure{
60			args: []Value{
61				literal("(patsubst"),
62				literal("%.java"),
63				literal("%.class"),
64				literal("foo.jar bar.java baz.h"),
65			},
66		},
67	}
68	ev := NewEvaluator(make(map[string]Var))
69	var buf evalBuffer
70	b.ReportAllocs()
71	b.ResetTimer()
72	for i := 0; i < b.N; i++ {
73		buf.Reset()
74		patsubst.Eval(&buf, ev)
75	}
76}
77