...
1 package cascadia
2
3 import (
4 "strings"
5 "testing"
6
7 "golang.org/x/net/html"
8 )
9
10 func MustParseHTML(doc string) *html.Node {
11 dom, err := html.Parse(strings.NewReader(doc))
12 if err != nil {
13 panic(err)
14 }
15 return dom
16 }
17
18 var selector = MustCompile(`div.matched`)
19 var doc = `<!DOCTYPE html>
20 <html>
21 <body>
22 <div class="matched">
23 <div>
24 <div class="matched"></div>
25 <div class="matched"></div>
26 <div class="matched"></div>
27 <div class="matched"></div>
28 <div class="matched"></div>
29 <div class="matched"></div>
30 <div class="matched"></div>
31 <div class="matched"></div>
32 <div class="matched"></div>
33 <div class="matched"></div>
34 <div class="matched"></div>
35 <div class="matched"></div>
36 <div class="matched"></div>
37 <div class="matched"></div>
38 <div class="matched"></div>
39 <div class="matched"></div>
40 </div>
41 </div>
42 </body>
43 </html>
44 `
45 var dom = MustParseHTML(doc)
46
47 func BenchmarkMatchAll(b *testing.B) {
48 var matches []*html.Node
49 for i := 0; i < b.N; i++ {
50 matches = selector.MatchAll(dom)
51 }
52 _ = matches
53 }
54
View as plain text