...

Source file src/github.com/PuerkitoBio/goquery/bench_iteration_test.go

Documentation: github.com/PuerkitoBio/goquery

     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