Lazy calculate WordCount, ReadingTime and FuzzyWordCount

This avoids having to execute these expensive operations for sites not using these values.

This commit sums up a set of wordcounting and autosummary related performance improvements.

The effect of these kind of depends on what features your site use, but a benchmark from 4 Hugo sites in the wild shows promise:

```
benchmark           old ns/op       new ns/op       delta
BenchmarkHugo-4     21293005843     20032857342     -5.92%

benchmark           old allocs     new allocs     delta
BenchmarkHugo-4     65290922       65186032       -0.16%

benchmark           old bytes      new bytes      delta
BenchmarkHugo-4     9771213416     9681866464     -0.91%
```

Closes #2378
This commit is contained in:
Bjørn Erik Pedersen
2016-08-17 13:41:48 +02:00
parent 4abaec5c04
commit dd45e6d7e5
7 changed files with 103 additions and 57 deletions

View File

@@ -33,6 +33,11 @@ import (
"github.com/stretchr/testify/require"
)
func init() {
//There are expected ERROR logging in tests that produces a lot of noise.
jww.SetStdoutThreshold(jww.LevelCritical)
}
const (
pageSimpleTitle = `---
title: simple template