bench_array_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package goquery
  2. import (
  3. "testing"
  4. )
  5. func BenchmarkFirst(b *testing.B) {
  6. b.StopTimer()
  7. sel := DocB().Find("dd")
  8. b.StartTimer()
  9. for i := 0; i < b.N; i++ {
  10. sel.First()
  11. }
  12. }
  13. func BenchmarkLast(b *testing.B) {
  14. b.StopTimer()
  15. sel := DocB().Find("dd")
  16. b.StartTimer()
  17. for i := 0; i < b.N; i++ {
  18. sel.Last()
  19. }
  20. }
  21. func BenchmarkEq(b *testing.B) {
  22. b.StopTimer()
  23. sel := DocB().Find("dd")
  24. j := 0
  25. b.StartTimer()
  26. for i := 0; i < b.N; i++ {
  27. sel.Eq(j)
  28. if j++; j >= sel.Length() {
  29. j = 0
  30. }
  31. }
  32. }
  33. func BenchmarkSlice(b *testing.B) {
  34. b.StopTimer()
  35. sel := DocB().Find("dd")
  36. j := 0
  37. b.StartTimer()
  38. for i := 0; i < b.N; i++ {
  39. sel.Slice(j, j+4)
  40. if j++; j >= (sel.Length() - 4) {
  41. j = 0
  42. }
  43. }
  44. }
  45. func BenchmarkGet(b *testing.B) {
  46. b.StopTimer()
  47. sel := DocB().Find("dd")
  48. j := 0
  49. b.StartTimer()
  50. for i := 0; i < b.N; i++ {
  51. sel.Get(j)
  52. if j++; j >= sel.Length() {
  53. j = 0
  54. }
  55. }
  56. }
  57. func BenchmarkIndex(b *testing.B) {
  58. var j int
  59. b.StopTimer()
  60. sel := DocB().Find("#Main")
  61. b.StartTimer()
  62. for i := 0; i < b.N; i++ {
  63. j = sel.Index()
  64. }
  65. if j != 3 {
  66. b.Fatalf("want 3, got %d", j)
  67. }
  68. }
  69. func BenchmarkIndexSelector(b *testing.B) {
  70. var j int
  71. b.StopTimer()
  72. sel := DocB().Find("#manual-nav dl dd:nth-child(1)")
  73. b.StartTimer()
  74. for i := 0; i < b.N; i++ {
  75. j = sel.IndexSelector("dd")
  76. }
  77. if j != 4 {
  78. b.Fatalf("want 4, got %d", j)
  79. }
  80. }
  81. func BenchmarkIndexOfNode(b *testing.B) {
  82. var j int
  83. b.StopTimer()
  84. sel := DocB().Find("span a")
  85. sel2 := DocB().Find("span a:nth-child(3)")
  86. n := sel2.Get(0)
  87. b.StartTimer()
  88. for i := 0; i < b.N; i++ {
  89. j = sel.IndexOfNode(n)
  90. }
  91. if j != 2 {
  92. b.Fatalf("want 2, got %d", j)
  93. }
  94. }
  95. func BenchmarkIndexOfSelection(b *testing.B) {
  96. var j int
  97. b.StopTimer()
  98. sel := DocB().Find("span a")
  99. sel2 := DocB().Find("span a:nth-child(3)")
  100. b.StartTimer()
  101. for i := 0; i < b.N; i++ {
  102. j = sel.IndexOfSelection(sel2)
  103. }
  104. if j != 2 {
  105. b.Fatalf("want 2, got %d", j)
  106. }
  107. }