diff options
author | Bjørn Erik Pedersen <[email protected]> | 2017-10-18 16:46:55 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2017-10-18 16:46:55 +0200 |
commit | c3c10f2c7ce4ee11186f51161943efc8b37a28c9 (patch) | |
tree | 0c3db4b81df5b16fcefa352d31ed11a2d3ae7f7f | |
parent | ad5ef438380d6ecba93b9b01a7893d450f652f72 (diff) | |
download | hugo-c3c10f2c7ce4ee11186f51161943efc8b37a28c9.tar.gz hugo-c3c10f2c7ce4ee11186f51161943efc8b37a28c9.zip |
Simplify Site benchmarks
Now running `./benchSite.sh` should give a good baseline.
-rwxr-xr-x | benchSite.sh | 2 | ||||
-rw-r--r-- | hugolib/site_benchmark_test.go | 51 |
2 files changed, 44 insertions, 9 deletions
diff --git a/benchSite.sh b/benchSite.sh index fd088a5ec..fcfa12387 100755 --- a/benchSite.sh +++ b/benchSite.sh @@ -9,4 +9,4 @@ GOEXE="${GOEXE-go}" echo "Running with BenchmarkSiteBuilding/${1}" -"${GOEXE}" test -run="NONE" -bench="BenchmarkSiteBuilding/${1}$" -test.benchmem=true ./hugolib -memprofile mem.prof -cpuprofile cpu.prof +"${GOEXE}" test -run="NONE" -bench="BenchmarkSiteBuilding/${1}" -test.benchmem=true ./hugolib -memprofile mem.prof -cpuprofile cpu.prof diff --git a/hugolib/site_benchmark_test.go b/hugolib/site_benchmark_test.go index 123e69b30..2381d7d61 100644 --- a/hugolib/site_benchmark_test.go +++ b/hugolib/site_benchmark_test.go @@ -14,6 +14,7 @@ package hugolib import ( + "flag" "fmt" "math/rand" "path/filepath" @@ -64,20 +65,53 @@ func (s siteBuildingBenchmarkConfig) String() string { } func BenchmarkSiteBuilding(b *testing.B) { + var ( + // The below represents the full matrix of benchmarks. Big! + allFrontmatters = []string{"YAML", "TOML"} + allNumRootSections = []int{1, 5} + allNumTags = []int{0, 1, 10, 20, 50, 100, 500, 1000, 5000} + allTagsPerPage = []int{0, 1, 5, 20, 50, 80} + allNumPages = []int{1, 10, 100, 500, 1000, 5000, 10000} + allDoRender = []bool{false, true} + allDoShortCodes = []bool{false, true} + ) + + var runDefault bool + + visitor := func(a *flag.Flag) { + if a.Name == "test.bench" && len(a.Value.String()) < 40 { + // The full suite is too big, so fall back to some smaller default if no + // restriction is set. + runDefault = true + } + } + + flag.Visit(visitor) + + if runDefault { + allFrontmatters = allFrontmatters[1:] + allNumRootSections = allNumRootSections[0:2] + allNumTags = allNumTags[0:2] + allTagsPerPage = allTagsPerPage[2:3] + allNumPages = allNumPages[2:5] + allDoRender = allDoRender[1:2] + allDoShortCodes = allDoShortCodes[1:2] + } + var conf siteBuildingBenchmarkConfig - for _, frontmatter := range []string{"YAML", "TOML"} { + for _, frontmatter := range allFrontmatters { conf.Frontmatter = frontmatter - for _, rootSections := range []int{1, 5} { + for _, rootSections := range allNumRootSections { conf.RootSections = rootSections - for _, numTags := range []int{0, 1, 10, 20, 50, 100, 500, 1000, 5000} { + for _, numTags := range allNumTags { conf.NumTags = numTags - for _, tagsPerPage := range []int{0, 1, 5, 20, 50, 80} { + for _, tagsPerPage := range allTagsPerPage { conf.TagsPerPage = tagsPerPage - for _, numPages := range []int{1, 10, 100, 500, 1000, 5000, 10000} { + for _, numPages := range allNumPages { conf.NumPages = numPages - for _, render := range []bool{false, true} { + for _, render := range allDoRender { conf.Render = render - for _, shortcodes := range []bool{false, true} { + for _, shortcodes := range allDoShortCodes { conf.Shortcodes = shortcodes doBenchMarkSiteBuilding(conf, b) } @@ -207,8 +241,9 @@ category = "categories" // Maybe consider reusing the Source fs mf := afero.NewMemMapFs() th, h := newTestSitesFromConfig(b, mf, siteConfig, - "layouts/_default/single.html", `Single HTML|{{ .Title }}|{{ .Content }}`, + "layouts/_default/single.html", `Single HTML|{{ .Title }}|{{ .Content }}|{{ partial "myPartial" . }} `, "layouts/_default/list.html", `List HTML|{{ .Title }}|{{ .Content }}`, + "layouts/partials/myPartial.html", `Partial: {{ "Hello **world**!" | markdownify }}`, "layouts/shortcodes/myShortcode.html", `<p>MyShortcode</p>`) fs := th.Fs |