diff --git a/bench_example_test.go b/bench_example_test.go new file mode 100644 index 0000000..07f7c82 --- /dev/null +++ b/bench_example_test.go @@ -0,0 +1,42 @@ +package goquery + +import ( + "bytes" + "fmt" + "strconv" + "testing" +) + +func BenchmarkMetalReviewExample(b *testing.B) { + var n int + var buf bytes.Buffer + + b.StopTimer() + doc := LoadDoc("metalreview.html") + b.StartTimer() + for i := 0; i < b.N; i++ { + doc.Root.Find(".slider-row:nth-child(1) .slider-item").Each(func(i int, s *Selection) { + var band, title string + var score float64 + var e error + + n++ + // For each item found, get the band, title and score, and print it + band = s.Find("strong").Text() + title = s.Find("em").Text() + if score, e = strconv.ParseFloat(s.Find(".score").Text(), 64); e != nil { + // Not a valid float, ignore score + if n <= 4 { + buf.WriteString(fmt.Sprintf("Review %d: %s - %s.\n", i, band, title)) + } + } else { + // Print all, including score + if n <= 4 { + buf.WriteString(fmt.Sprintf("Review %d: %s - %s (%2.1f).\n", i, band, title, score)) + } + } + }) + } + b.Log(buf.String()) + b.Logf("MetalReviewExample=%d", n) +} diff --git a/testdata/metalreview.html b/testdata/metalreview.html new file mode 100644 index 0000000..fc4a38f --- /dev/null +++ b/testdata/metalreview.html @@ -0,0 +1,413 @@ + + + + + + + + + + + + + + Metal Reviews, News, Blogs, Interviews and Community | Metal Review + + + + + + + + + + +
+
+ + + +
+ + + + +
+
+ + + + +
+
+
+ +
+
+
+
+ + + + + +
+

Reviews

+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
    + +
  • +

    + Serpentine Path - Serpentine Path + Serpentine Path
    + Serpentine Path
    + +

    +
  • + +
  • +

    + Hunter + Hunter's Ground
    + No God But the Wild
    + +

    +
  • + +
  • +

    + Blut Aus Nord - 777 - Cosmosophy + Blut Aus Nord
    + 777 - Cosmosophy
    + Black +

    +
  • + +
  • +

    + Ufomammut - Oro: Opus Alter + Ufomammut
    + Oro: Opus Alter
    + Doom +

    +
  • + +
  • +

    + Resurgency - False Enlightenment + Resurgency
    + False Enlightenment
    + Death +

    +
  • + +
  • +

    + Morgoth - Cursed to Live + Morgoth
    + Cursed to Live
    + DeathLive +

    +
  • + +
  • +

    + Krallice - Years Past Matter + Krallice
    + Years Past Matter
    + Black +

    +
  • + +
  • +

    + Murder Construct - Results + Murder Construct
    + Results
    + Grindcore +

    +
  • + +
  • +

    + Grave - Endless Procession of Souls + Grave
    + Endless Procession of Souls
    + Death +

    +
  • + +
  • +

    + Master - The New Elite + Master
    + The New Elite
    + Death +

    +
  • + +
+
+
+
+
+
+
+ Serpentine Path - Serpentine PathHunter's Ground - No God But the WildBlut Aus Nord - 777 - CosmosophyUfomammut - Oro: Opus AlterResurgency - False EnlightenmentMorgoth - Cursed to LiveKrallice - Years Past MatterMurder Construct - ResultsGrave - Endless Procession of SoulsMaster - The New Elite +
+
+
+
+ + + + + + + +
+
+
+
+
+ + + + +
Goto Next Group
+
Goto Previous Group
+ + + + + +
+ +
+ + + + + + + +
+

Lashes

+
NEW Katatonia - Dead End Kings
45 minutes ago by Chaosjunkie
+
Katatonia - Dead End Kings
1 hour ago by Harry Dick Rotten
+
Resurgency - False Enlightenment
3 hours ago by Anonymous
+
Witchcraft - The Alchemist
5 hours ago by Luke_22
+
Katatonia - Dead End Kings
9 hours ago by chaosjunkie
+
Katatonia - Dead End Kings
10 hours ago by Compeller
+
Manetheren - Time
10 hours ago by xpmule
+
Ufomammut - Oro: Opus Alter
16 hours ago by Anonymous
+
Ufomammut - Oro: Opus Alter
17 hours ago by Harry Dick Rotten
+
Katatonia - Dead End Kings
yesterday by Chaosjunkie
+
Katatonia - Dead End Kings
yesterday by Anonymous
+
Katatonia - Dead End Kings
yesterday by Anonymous
+
Katatonia - Dead End Kings
yesterday by Anonymous
+
Katatonia - Dead End Kings
yesterday by frantic
+
Blut Aus Nord - 777 - Cosmosophy
yesterday by Dimensional Bleedthrough
+ +
+ +
+
+
+ + + +
+
+ + + + + + + + + + +