mirror of
https://github.com/gohugoio/hugo.git
synced 2025-04-22 06:17:25 +00:00
Improve site benchmarks
This commit is contained in:
parent
23f69efb39
commit
051fa343d0
1 changed files with 80 additions and 42 deletions
|
@ -27,6 +27,7 @@ import (
|
||||||
type siteBuildingBenchmarkConfig struct {
|
type siteBuildingBenchmarkConfig struct {
|
||||||
Frontmatter string
|
Frontmatter string
|
||||||
NumPages int
|
NumPages int
|
||||||
|
NumLangs int
|
||||||
RootSections int
|
RootSections int
|
||||||
Render bool
|
Render bool
|
||||||
Shortcodes bool
|
Shortcodes bool
|
||||||
|
@ -39,6 +40,8 @@ func (s siteBuildingBenchmarkConfig) String() string {
|
||||||
// To make it a short as possible, we only shows bools when enabled and ints when >= 0 (RootSections > 1)
|
// To make it a short as possible, we only shows bools when enabled and ints when >= 0 (RootSections > 1)
|
||||||
sep := ","
|
sep := ","
|
||||||
id := s.Frontmatter + sep
|
id := s.Frontmatter + sep
|
||||||
|
id += fmt.Sprintf("num_langs=%d%s", s.NumLangs, sep)
|
||||||
|
|
||||||
if s.RootSections > 1 {
|
if s.RootSections > 1 {
|
||||||
id += fmt.Sprintf("num_root_sections=%d%s", s.RootSections, sep)
|
id += fmt.Sprintf("num_root_sections=%d%s", s.RootSections, sep)
|
||||||
}
|
}
|
||||||
|
@ -61,9 +64,10 @@ func (s siteBuildingBenchmarkConfig) String() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
return strings.TrimSuffix(id, sep)
|
return strings.TrimSuffix(id, sep)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var someLangs = []string{"en", "fr", "nn"}
|
||||||
|
|
||||||
func BenchmarkSiteBuilding(b *testing.B) {
|
func BenchmarkSiteBuilding(b *testing.B) {
|
||||||
var (
|
var (
|
||||||
// The below represents the full matrix of benchmarks. Big!
|
// The below represents the full matrix of benchmarks. Big!
|
||||||
|
@ -74,6 +78,7 @@ func BenchmarkSiteBuilding(b *testing.B) {
|
||||||
allNumPages = []int{1, 10, 100, 500, 1000, 5000, 10000}
|
allNumPages = []int{1, 10, 100, 500, 1000, 5000, 10000}
|
||||||
allDoRender = []bool{false, true}
|
allDoRender = []bool{false, true}
|
||||||
allDoShortCodes = []bool{false, true}
|
allDoShortCodes = []bool{false, true}
|
||||||
|
allNumLangs = []int{1, 3}
|
||||||
)
|
)
|
||||||
|
|
||||||
var runDefault bool
|
var runDefault bool
|
||||||
|
@ -99,21 +104,24 @@ func BenchmarkSiteBuilding(b *testing.B) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var conf siteBuildingBenchmarkConfig
|
var conf siteBuildingBenchmarkConfig
|
||||||
for _, frontmatter := range allFrontmatters {
|
for _, numLangs := range allNumLangs {
|
||||||
conf.Frontmatter = frontmatter
|
conf.NumLangs = numLangs
|
||||||
for _, rootSections := range allNumRootSections {
|
for _, frontmatter := range allFrontmatters {
|
||||||
conf.RootSections = rootSections
|
conf.Frontmatter = frontmatter
|
||||||
for _, numTags := range allNumTags {
|
for _, rootSections := range allNumRootSections {
|
||||||
conf.NumTags = numTags
|
conf.RootSections = rootSections
|
||||||
for _, tagsPerPage := range allTagsPerPage {
|
for _, numTags := range allNumTags {
|
||||||
conf.TagsPerPage = tagsPerPage
|
conf.NumTags = numTags
|
||||||
for _, numPages := range allNumPages {
|
for _, tagsPerPage := range allTagsPerPage {
|
||||||
conf.NumPages = numPages
|
conf.TagsPerPage = tagsPerPage
|
||||||
for _, render := range allDoRender {
|
for _, numPages := range allNumPages {
|
||||||
conf.Render = render
|
conf.NumPages = numPages
|
||||||
for _, shortcodes := range allDoShortCodes {
|
for _, render := range allDoRender {
|
||||||
conf.Shortcodes = shortcodes
|
conf.Render = render
|
||||||
doBenchMarkSiteBuilding(conf, b)
|
for _, shortcodes := range allDoShortCodes {
|
||||||
|
conf.Shortcodes = shortcodes
|
||||||
|
doBenchMarkSiteBuilding(conf, b)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -199,11 +207,29 @@ baseURL = "http://example.com/blog"
|
||||||
paginate = 10
|
paginate = 10
|
||||||
defaultContentLanguage = "en"
|
defaultContentLanguage = "en"
|
||||||
|
|
||||||
|
[languages]
|
||||||
|
%s
|
||||||
|
|
||||||
[Taxonomies]
|
[Taxonomies]
|
||||||
tag = "tags"
|
tag = "tags"
|
||||||
category = "categories"
|
category = "categories"
|
||||||
`
|
`
|
||||||
|
|
||||||
|
langConfigTemplate := `
|
||||||
|
[languages.%s]
|
||||||
|
languageName = "Lang %s"
|
||||||
|
weight = %d
|
||||||
|
`
|
||||||
|
|
||||||
|
langConfig := ""
|
||||||
|
|
||||||
|
for i := 0; i < cfg.NumLangs; i++ {
|
||||||
|
langCode := someLangs[i]
|
||||||
|
langConfig += fmt.Sprintf(langConfigTemplate, langCode, langCode, i+1)
|
||||||
|
}
|
||||||
|
|
||||||
|
siteConfig = fmt.Sprintf(siteConfig, langConfig)
|
||||||
|
|
||||||
numTags := cfg.NumTags
|
numTags := cfg.NumTags
|
||||||
|
|
||||||
if cfg.TagsPerPage > numTags {
|
if cfg.TagsPerPage > numTags {
|
||||||
|
@ -248,37 +274,49 @@ category = "categories"
|
||||||
|
|
||||||
fs := th.Fs
|
fs := th.Fs
|
||||||
|
|
||||||
pagesPerSection := cfg.NumPages / cfg.RootSections
|
pagesPerSection := cfg.NumPages / cfg.RootSections / cfg.NumLangs
|
||||||
|
for li := 0; li < cfg.NumLangs; li++ {
|
||||||
|
fileLangCodeID := ""
|
||||||
|
if li > 0 {
|
||||||
|
fileLangCodeID = "." + someLangs[li] + "."
|
||||||
|
}
|
||||||
|
|
||||||
for i := 0; i < cfg.RootSections; i++ {
|
for i := 0; i < cfg.RootSections; i++ {
|
||||||
for j := 0; j < pagesPerSection; j++ {
|
for j := 0; j < pagesPerSection; j++ {
|
||||||
var tagsSlice []string
|
var tagsSlice []string
|
||||||
|
|
||||||
if numTags > 0 {
|
if numTags > 0 {
|
||||||
tagsStart := rand.Intn(numTags) - cfg.TagsPerPage
|
tagsStart := rand.Intn(numTags) - cfg.TagsPerPage
|
||||||
if tagsStart < 0 {
|
if tagsStart < 0 {
|
||||||
tagsStart = 0
|
tagsStart = 0
|
||||||
|
}
|
||||||
|
tagsSlice = tags[tagsStart : tagsStart+cfg.TagsPerPage]
|
||||||
}
|
}
|
||||||
tagsSlice = tags[tagsStart : tagsStart+cfg.TagsPerPage]
|
|
||||||
|
if cfg.Frontmatter == "TOML" {
|
||||||
|
pageTemplate = pageTemplateTOML
|
||||||
|
tagsStr = "[]"
|
||||||
|
if cfg.TagsPerPage > 0 {
|
||||||
|
tagsStr = strings.Replace(fmt.Sprintf("%q", tagsSlice), " ", ", ", -1)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// YAML
|
||||||
|
pageTemplate = pageTemplateYAML
|
||||||
|
for _, tag := range tagsSlice {
|
||||||
|
tagsStr += "\n- " + tag
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
content := fmt.Sprintf(pageTemplate, fmt.Sprintf("Title%d_%d", i, j), tagsStr, contentPagesContent[rand.Intn(3)])
|
||||||
|
|
||||||
|
contentFilename := fmt.Sprintf("page%d%s.md", j, fileLangCodeID)
|
||||||
|
|
||||||
|
writeSource(b, fs, filepath.Join("content", fmt.Sprintf("sect%d", i), contentFilename), content)
|
||||||
}
|
}
|
||||||
|
|
||||||
if cfg.Frontmatter == "TOML" {
|
content := fmt.Sprintf(pageTemplate, fmt.Sprintf("Section %d", i), "[]", contentPagesContent[rand.Intn(3)])
|
||||||
pageTemplate = pageTemplateTOML
|
indexContentFilename := fmt.Sprintf("_index%s.md", fileLangCodeID)
|
||||||
tagsStr = "[]"
|
writeSource(b, fs, filepath.Join("content", fmt.Sprintf("sect%d", i), indexContentFilename), content)
|
||||||
if cfg.TagsPerPage > 0 {
|
|
||||||
tagsStr = strings.Replace(fmt.Sprintf("%q", tagsSlice), " ", ", ", -1)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// YAML
|
|
||||||
pageTemplate = pageTemplateYAML
|
|
||||||
for _, tag := range tagsSlice {
|
|
||||||
tagsStr += "\n- " + tag
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
content := fmt.Sprintf(pageTemplate, fmt.Sprintf("Title%d_%d", i, j), tagsStr, contentPagesContent[rand.Intn(3)])
|
|
||||||
|
|
||||||
writeSource(b, fs, filepath.Join("content", fmt.Sprintf("sect%d", i), fmt.Sprintf("page%d.md", j)), content)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue