Permalink
Browse files

Add benchmark for sort and reverse

  • Loading branch information...
1 parent aca0f60 commit 5cf0aa2fc0cebbb51227ba0b23e0906088bf3027 @bep bep committed Jul 21, 2015
Showing with 69 additions and 4 deletions.
  1. +12 −4 bench.sh
  2. +57 −0 hugolib/pageSort_test.go
View
@@ -7,21 +7,29 @@
# - Do the same for master
# - then compare the two runs with benchcmp
-if [ $# -ne 2 ]
+benchFilter=".*"
+
+if (( $# < 2 ));
then
- echo "USAGE: ./bench.sh <git-branch> <package-to-bench>"
+ echo "USAGE: ./bench.sh <git-branch> <package-to-bench> (and <benchmark filter> (regexp, optional))"
exit 1
fi
+
+if [ $# -eq 3 ]; then
+ benchFilter=$3
+fi
+
+
BRANCH=$1
PACKAGE=$2
git checkout $BRANCH
-go test -test.run=NONE -bench=".*" -test.benchmem=true ./$PACKAGE > /tmp/bench-$PACKAGE-$BRANCH.txt
+go test -test.run=NONE -bench="$benchFilter" -test.benchmem=true ./$PACKAGE > /tmp/bench-$PACKAGE-$BRANCH.txt
git checkout master
-go test -test.run=NONE -bench=".*" -test.benchmem=true ./$PACKAGE > /tmp/bench-$PACKAGE-master.txt
+go test -test.run=NONE -bench="$benchFilter" -test.benchmem=true ./$PACKAGE > /tmp/bench-$PACKAGE-master.txt
benchcmp /tmp/bench-$PACKAGE-master.txt /tmp/bench-$PACKAGE-$BRANCH.txt
@@ -0,0 +1,57 @@
+package hugolib
+
+import (
+ "fmt"
+ "github.com/stretchr/testify/assert"
+ "path/filepath"
+ "testing"
+
+ "github.com/spf13/hugo/source"
+)
+
+func TestPageSortReverse(t *testing.T) {
+ p := createSortTestPages(10)
+ assert.Equal(t, 0, p[0].FuzzyWordCount)
+ assert.Equal(t, 9, p[9].FuzzyWordCount)
+ p = p.Reverse()
+ assert.Equal(t, 9, p[0].FuzzyWordCount)
+ assert.Equal(t, 1, p[9].FuzzyWordCount)
+}
+
+func BenchmarkSortByWeightAndReverse(b *testing.B) {
+
+ p := createSortTestPages(300)
+
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {
+ p = p.ByWeight().Reverse()
+ }
+
+}
+
+func createSortTestPages(num int) Pages {
+ pages := make(Pages, num)
+
+ for i := 0; i < num; i++ {
+ pages[i] = &Page{
+ Node: Node{
+ URLPath: URLPath{
+ Section: "z",
+ URL: fmt.Sprintf("http://base/x/y/p%d.html", i),
+ },
+ Site: &SiteInfo{
+ BaseURL: "http://base/",
+ },
+ },
+ Source: Source{File: *source.NewFile(filepath.FromSlash(fmt.Sprintf("/x/y/p%d.md", i)))},
+ }
+ w := 5
+ if i%2 == 0 {
+ w = 10
+ }
+ pages[i].FuzzyWordCount = i
+ pages[i].Weight = w
+ }
+
+ return pages
+}

0 comments on commit 5cf0aa2

Please sign in to comment.