...
1 package goquery
2
3 import (
4 "strconv"
5 "testing"
6 )
7
8 func BenchmarkEach(b *testing.B) {
9 var tmp, n int
10
11 b.StopTimer()
12 sel := DocW().Find("td")
13 f := func(i int, s *Selection) {
14 tmp++
15 }
16 b.StartTimer()
17 for i := 0; i < b.N; i++ {
18 sel.Each(f)
19 if n == 0 {
20 n = tmp
21 }
22 }
23 if n != 59 {
24 b.Fatalf("want 59, got %d", n)
25 }
26 }
27
28 func BenchmarkMap(b *testing.B) {
29 var tmp, n int
30
31 b.StopTimer()
32 sel := DocW().Find("td")
33 f := func(i int, s *Selection) string {
34 tmp++
35 return strconv.Itoa(tmp)
36 }
37 b.StartTimer()
38 for i := 0; i < b.N; i++ {
39 sel.Map(f)
40 if n == 0 {
41 n = tmp
42 }
43 }
44 if n != 59 {
45 b.Fatalf("want 59, got %d", n)
46 }
47 }
48
49 func BenchmarkEachWithBreak(b *testing.B) {
50 var tmp, n int
51
52 b.StopTimer()
53 sel := DocW().Find("td")
54 f := func(i int, s *Selection) bool {
55 tmp++
56 return tmp < 10
57 }
58 b.StartTimer()
59 for i := 0; i < b.N; i++ {
60 tmp = 0
61 sel.EachWithBreak(f)
62 if n == 0 {
63 n = tmp
64 }
65 }
66 if n != 10 {
67 b.Fatalf("want 10, got %d", n)
68 }
69 }
70
View as plain text