mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-14 20:37:55 -05:00
83bef6955e
e161ea09d Add one more Chinese file to workaround reflect: Zero(nil) b595b3a21 Add more Chinese translation 56e4e95d9 Use lang.Merge to "fill in the gaps" for untranslated pages ef079406c Merge commit '650fac3a4e7d256f4505402ab44cfc3c804b8dea' 650fac3a4 Squashed 'themes/gohugoioTheme/' changes from a1768ebb..f31a3dc8 322eff899 Add Chinese language for menus d90b886e0 Fix Markdown table syntax in previous commit 737f3dfca Update the leaf bundle vs branch bundle table 09fa1bc4e Clarify that `.Now` is obsolete 879ea3f6a Make release notes somewhat more consistent 0113e2051 Move 0.40.2-relnotes into content/en/news 77578f5bf Move content/ into new contentDir content/en/ 4dcf7c709 Fix "reflect: Zero(nil)" error in showcase 63dd25505 Release 0.40.2 2076c0d56 releaser: Prepare repository for 0.41-DEV 070fe565e releaser: Add release notes to /docs for release of 0.40.2 4ce52e913 releaser: Bump versions for release of 0.40.2 41907c487 Fix typos in syntax-highlighting.md 91753ef3d Add missing backtick b77274301 Remove duplicate release notes (0.27, 0.27.1, 0.35) 6e00da316 Remove obsolete content/release-notes/ directory 00a6d8c02 Change en dash back to `--` in 0.38.2-relnotes 51b32dc00 Update archetypes.md d0e5c2307 Release 0.40.1 4538a6d5b releaser: Prepare repository for 0.41-DEV 91b391d70 releaser: Add release notes to /docs for release of 0.40.1 e0979d143 releaser: Bump versions for release of 0.40.1 7983967c2 Clean images fe3fdd77d Polish showcase for Flesland Flis e6dde3989 Showcase - Flesland Flis AS by Absoluttweb 73aa62290 Revive @spf13's special Hugo font add67b335 Release Hugo 0.40 c0a26e5a6 Merge branch 'temp40' beeabaaae releaser: Prepare repository for 0.41-DEV e67d5e985 releaser: Add release notes to /docs for release of 0.40 6cdd95273 releaser: Bump versions for release of 0.40 bee21fb9b Revive the other Hugo logos too 4f45e8fe1 Fix the link type attribute for RSS in examples 8c67dc89a Fix example in delimit doc e7f6c00d5 Revive the logo used on the forum 82b0cd26e Merge commit 'a215abf70e018f4bf40d6c09d8bd148d8684b33d' 119c8ca58 Merge commit 'd2ec1a06df8ab6b17ad05cb008d5701b40327d47' db4683bd2 Improve .Get docs 05260b886 .Get function: fix syntax signature git-subtree-dir: docs git-subtree-split: e161ea09d33e3199f4998e4d2e9068d5a850f042
111 lines
4.1 KiB
Markdown
111 lines
4.1 KiB
Markdown
---
|
|
title: Build Performance
|
|
linktitle: Build Performance
|
|
description: An overview of features used for diagnosing and improving performance issues in site builds.
|
|
date: 2017-03-12
|
|
publishdate: 2017-03-12
|
|
lastmod: 2017-03-12
|
|
keywords: [performance, build]
|
|
categories: [troubleshooting]
|
|
menu:
|
|
docs:
|
|
parent: "troubleshooting"
|
|
weight: 3
|
|
slug:
|
|
aliases: []
|
|
toc: true
|
|
---
|
|
|
|
{{% note %}}
|
|
The example site used below is from https://github.com/gohugoio/hugo/tree/master/examples/blog
|
|
{{% /note %}}
|
|
|
|
## Template Metrics
|
|
|
|
Hugo is a very fast static site generator, but it is possible to write
|
|
inefficient templates. Hugo's *template metrics* feature is extremely helpful
|
|
in pinpointing which templates are executed most often and how long those
|
|
executions take **in terms of CPU time**.
|
|
|
|
| Metric Name | Description |
|
|
|---------------------|-------------|
|
|
| cumulative duration | The cumulative time spent executing a given template. |
|
|
| average duration | The average time spent executing a given template. |
|
|
| maximum duration | The maximum time a single execution took for a given template. |
|
|
| count | The number of times a template was executed. |
|
|
| template | The template name. |
|
|
|
|
```
|
|
▶ hugo --templateMetrics
|
|
Started building sites ...
|
|
|
|
Built site for language en:
|
|
0 draft content
|
|
0 future content
|
|
0 expired content
|
|
2 regular pages created
|
|
22 other pages created
|
|
0 non-page files copied
|
|
0 paginator pages created
|
|
4 tags created
|
|
3 categories created
|
|
total in 18 ms
|
|
|
|
Template Metrics:
|
|
|
|
cumulative average maximum
|
|
duration duration duration count template
|
|
---------- -------- -------- ----- --------
|
|
6.419663ms 583.605µs 994.374µs 11 _internal/_default/rss.xml
|
|
4.718511ms 1.572837ms 3.880742ms 3 indexes/category.html
|
|
4.642666ms 2.321333ms 3.282842ms 2 post/single.html
|
|
4.364445ms 396.767µs 2.451372ms 11 partials/header.html
|
|
2.346069ms 586.517µs 903.343µs 4 indexes/tag.html
|
|
2.330919ms 211.901µs 2.281342ms 11 partials/header.includes.html
|
|
1.238976ms 103.248µs 446.084µs 12 post/li.html
|
|
972.16µs 972.16µs 972.16µs 1 _internal/_default/sitemap.xml
|
|
953.597µs 953.597µs 953.597µs 1 index.html
|
|
822.263µs 822.263µs 822.263µs 1 indexes/post.html
|
|
567.498µs 51.59µs 112.205µs 11 partials/navbar.html
|
|
348.22µs 31.656µs 88.249µs 11 partials/meta.html
|
|
346.782µs 173.391µs 276.176µs 2 post/summary.html
|
|
235.184µs 21.38µs 124.383µs 11 partials/footer.copyright.html
|
|
132.003µs 12µs 117.999µs 11 partials/menu.html
|
|
72.547µs 6.595µs 63.764µs 11 partials/footer.html
|
|
```
|
|
|
|
{{% note %}}
|
|
**A Note About Parallelism**
|
|
|
|
Hugo builds pages in parallel where multiple pages are generated
|
|
simultaneously. Because of this parallelism, the sum of "cumulative duration"
|
|
values is usually greater than the actual time it takes to build a site.
|
|
{{% /note %}}
|
|
|
|
|
|
## Cached Partials
|
|
|
|
Some `partial` templates such as sidebars or menus are executed many times
|
|
during a site build. Depending on the content within the `partial` template and
|
|
the desired output, the template may benefit from caching to reduce the number
|
|
of executions. The [`partialCached`][partialCached] template function provides
|
|
caching capabilities for `partial` templates.
|
|
|
|
{{% tip %}}
|
|
Note that you can create cached variants of each `partial` by passing additional
|
|
parameters to `partialCached` beyond the initial context. See the
|
|
`partialCached` documentation for more details.
|
|
{{% /tip %}}
|
|
|
|
|
|
## Step Analysis
|
|
|
|
Hugo provides a means of seeing metrics about each step in the site build
|
|
process. We call that *Step Analysis*. The *step analysis* output shows the
|
|
total time per step, the cumulative time after each step (in parentheses),
|
|
the memory usage per step, and the total memory allocations per step.
|
|
|
|
To enable *step analysis*, use the `--stepAnalysis` option when running Hugo.
|
|
|
|
|
|
[partialCached]:{{< ref "functions/partialCached.md" >}}
|