github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/goquery/bench_filter_test.go (about) 1 package goquery 2 3 import ( 4 "testing" 5 ) 6 7 func BenchmarkFilter(b *testing.B) { 8 var n int 9 10 b.StopTimer() 11 sel := DocW().Find("li") 12 b.StartTimer() 13 for i := 0; i < b.N; i++ { 14 if n == 0 { 15 n = sel.Filter(".toclevel-1").Length() 16 } else { 17 sel.Filter(".toclevel-1") 18 } 19 } 20 b.Logf("Filter=%d", n) 21 } 22 23 func BenchmarkNot(b *testing.B) { 24 var n int 25 26 b.StopTimer() 27 sel := DocW().Find("li") 28 b.StartTimer() 29 for i := 0; i < b.N; i++ { 30 if n == 0 { 31 n = sel.Not(".toclevel-2").Length() 32 } else { 33 sel.Filter(".toclevel-2") 34 } 35 } 36 b.Logf("Not=%d", n) 37 } 38 39 func BenchmarkFilterFunction(b *testing.B) { 40 var n int 41 42 b.StopTimer() 43 sel := DocW().Find("li") 44 f := func(i int, s *Selection) bool { 45 return len(s.Get(0).Attr) > 0 46 } 47 b.StartTimer() 48 for i := 0; i < b.N; i++ { 49 if n == 0 { 50 n = sel.FilterFunction(f).Length() 51 } else { 52 sel.FilterFunction(f) 53 } 54 } 55 b.Logf("FilterFunction=%d", n) 56 } 57 58 func BenchmarkNotFunction(b *testing.B) { 59 var n int 60 61 b.StopTimer() 62 sel := DocW().Find("li") 63 f := func(i int, s *Selection) bool { 64 return len(s.Get(0).Attr) > 0 65 } 66 b.StartTimer() 67 for i := 0; i < b.N; i++ { 68 if n == 0 { 69 n = sel.NotFunction(f).Length() 70 } else { 71 sel.NotFunction(f) 72 } 73 } 74 b.Logf("NotFunction=%d", n) 75 } 76 77 func BenchmarkFilterNodes(b *testing.B) { 78 var n int 79 80 b.StopTimer() 81 sel := DocW().Find("li") 82 sel2 := DocW().Find(".toclevel-2") 83 nodes := sel2.Nodes 84 b.StartTimer() 85 for i := 0; i < b.N; i++ { 86 if n == 0 { 87 n = sel.FilterNodes(nodes...).Length() 88 } else { 89 sel.FilterNodes(nodes...) 90 } 91 } 92 b.Logf("FilterNodes=%d", n) 93 } 94 95 func BenchmarkNotNodes(b *testing.B) { 96 var n int 97 98 b.StopTimer() 99 sel := DocW().Find("li") 100 sel2 := DocW().Find(".toclevel-1") 101 nodes := sel2.Nodes 102 b.StartTimer() 103 for i := 0; i < b.N; i++ { 104 if n == 0 { 105 n = sel.NotNodes(nodes...).Length() 106 } else { 107 sel.NotNodes(nodes...) 108 } 109 } 110 b.Logf("NotNodes=%d", n) 111 } 112 113 func BenchmarkFilterSelection(b *testing.B) { 114 var n int 115 116 b.StopTimer() 117 sel := DocW().Find("li") 118 sel2 := DocW().Find(".toclevel-2") 119 b.StartTimer() 120 for i := 0; i < b.N; i++ { 121 if n == 0 { 122 n = sel.FilterSelection(sel2).Length() 123 } else { 124 sel.FilterSelection(sel2) 125 } 126 } 127 b.Logf("FilterSelection=%d", n) 128 } 129 130 func BenchmarkNotSelection(b *testing.B) { 131 var n int 132 133 b.StopTimer() 134 sel := DocW().Find("li") 135 sel2 := DocW().Find(".toclevel-1") 136 b.StartTimer() 137 for i := 0; i < b.N; i++ { 138 if n == 0 { 139 n = sel.NotSelection(sel2).Length() 140 } else { 141 sel.NotSelection(sel2) 142 } 143 } 144 b.Logf("NotSelection=%d", n) 145 } 146 147 func BenchmarkHas(b *testing.B) { 148 var n int 149 150 b.StopTimer() 151 sel := DocW().Find("h2") 152 b.StartTimer() 153 for i := 0; i < b.N; i++ { 154 if n == 0 { 155 n = sel.Has(".editsection").Length() 156 } else { 157 sel.Has(".editsection") 158 } 159 } 160 b.Logf("Has=%d", n) 161 } 162 163 func BenchmarkHasNodes(b *testing.B) { 164 var n int 165 166 b.StopTimer() 167 sel := DocW().Find("li") 168 sel2 := DocW().Find(".tocnumber") 169 nodes := sel2.Nodes 170 b.StartTimer() 171 for i := 0; i < b.N; i++ { 172 if n == 0 { 173 n = sel.HasNodes(nodes...).Length() 174 } else { 175 sel.HasNodes(nodes...) 176 } 177 } 178 b.Logf("HasNodes=%d", n) 179 } 180 181 func BenchmarkHasSelection(b *testing.B) { 182 var n int 183 184 b.StopTimer() 185 sel := DocW().Find("li") 186 sel2 := DocW().Find(".tocnumber") 187 b.StartTimer() 188 for i := 0; i < b.N; i++ { 189 if n == 0 { 190 n = sel.HasSelection(sel2).Length() 191 } else { 192 sel.HasSelection(sel2) 193 } 194 } 195 b.Logf("HasSelection=%d", n) 196 } 197 198 func BenchmarkEnd(b *testing.B) { 199 var n int 200 201 b.StopTimer() 202 sel := DocW().Find("li").Has(".tocnumber") 203 b.StartTimer() 204 for i := 0; i < b.N; i++ { 205 if n == 0 { 206 n = sel.End().Length() 207 } else { 208 sel.End() 209 } 210 } 211 b.Logf("End=%d", n) 212 }