diff --git a/bench.sh b/bench.sh index 27335287d..367a74403 100755 --- a/bench.sh +++ b/bench.sh @@ -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 " + echo "USAGE: ./bench.sh (and (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 \ No newline at end of file diff --git a/hugolib/pageSort_test.go b/hugolib/pageSort_test.go new file mode 100644 index 000000000..18b16bb0c --- /dev/null +++ b/hugolib/pageSort_test.go @@ -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 +}