mirror of
				https://github.com/gohugoio/hugo.git
				synced 2024-05-11 05:54:58 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			102 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			3.8 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  posts/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  posts/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  posts/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 %}}
 | |
| 
 | |
| 
 | |
| [partialCached]:{{< ref "/functions/partialCached.md" >}}
 |