1package goquery 2 3import ( 4 "testing" 5) 6 7func BenchmarkAdd(b *testing.B) { 8 var n int 9 10 b.StopTimer() 11 sel := DocB().Find("dd") 12 b.StartTimer() 13 for i := 0; i < b.N; i++ { 14 if n == 0 { 15 n = sel.Add("h2[title]").Length() 16 } else { 17 sel.Add("h2[title]") 18 } 19 } 20 if n != 43 { 21 b.Fatalf("want 43, got %d", n) 22 } 23} 24 25func BenchmarkAddSelection(b *testing.B) { 26 var n int 27 28 b.StopTimer() 29 sel := DocB().Find("dd") 30 sel2 := DocB().Find("h2[title]") 31 b.StartTimer() 32 for i := 0; i < b.N; i++ { 33 if n == 0 { 34 n = sel.AddSelection(sel2).Length() 35 } else { 36 sel.AddSelection(sel2) 37 } 38 } 39 if n != 43 { 40 b.Fatalf("want 43, got %d", n) 41 } 42} 43 44func BenchmarkAddNodes(b *testing.B) { 45 var n int 46 47 b.StopTimer() 48 sel := DocB().Find("dd") 49 sel2 := DocB().Find("h2[title]") 50 nodes := sel2.Nodes 51 b.StartTimer() 52 for i := 0; i < b.N; i++ { 53 if n == 0 { 54 n = sel.AddNodes(nodes...).Length() 55 } else { 56 sel.AddNodes(nodes...) 57 } 58 } 59 if n != 43 { 60 b.Fatalf("want 43, got %d", n) 61 } 62} 63 64func BenchmarkAddNodesBig(b *testing.B) { 65 var n int 66 67 doc := DocW() 68 sel := doc.Find("li") 69 // make nodes > 1000 70 nodes := sel.Nodes 71 nodes = append(nodes, nodes...) 72 nodes = append(nodes, nodes...) 73 sel = doc.Find("xyz") 74 b.ResetTimer() 75 76 for i := 0; i < b.N; i++ { 77 if n == 0 { 78 n = sel.AddNodes(nodes...).Length() 79 } else { 80 sel.AddNodes(nodes...) 81 } 82 } 83 if n != 373 { 84 b.Fatalf("want 373, got %d", n) 85 } 86} 87 88func BenchmarkAndSelf(b *testing.B) { 89 var n int 90 91 b.StopTimer() 92 sel := DocB().Find("dd").Parent() 93 b.StartTimer() 94 for i := 0; i < b.N; i++ { 95 if n == 0 { 96 n = sel.AndSelf().Length() 97 } else { 98 sel.AndSelf() 99 } 100 } 101 if n != 44 { 102 b.Fatalf("want 44, got %d", n) 103 } 104} 105