benchmark_test.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package cascadia
  2. import (
  3. "strings"
  4. "testing"
  5. "golang.org/x/net/html"
  6. )
  7. func MustParseHTML(doc string) *html.Node {
  8. dom, err := html.Parse(strings.NewReader(doc))
  9. if err != nil {
  10. panic(err)
  11. }
  12. return dom
  13. }
  14. var selector = MustCompile(`div.matched`)
  15. var doc = `<!DOCTYPE html>
  16. <html>
  17. <body>
  18. <div class="matched">
  19. <div>
  20. <div class="matched"></div>
  21. <div class="matched"></div>
  22. <div class="matched"></div>
  23. <div class="matched"></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>
  37. </div>
  38. </body>
  39. </html>
  40. `
  41. var dom = MustParseHTML(doc)
  42. func BenchmarkMatchAll(b *testing.B) {
  43. var matches []*html.Node
  44. for i := 0; i < b.N; i++ {
  45. matches = selector.MatchAll(dom)
  46. }
  47. _ = matches
  48. }