Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-04-09 18:54:43 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-04-11 10:48:56 +0300
commitfdf1d94ebc7d1aa4855c62237f2edbd4bdade1a7 (patch)
treefaca07a544e098b2482b98ea36933bbf38e80222 /commands
parent1157fef85908ea54883fe0dba6adc4861ba02162 (diff)
commands: Make benchmark non-global
See #4598
Diffstat (limited to 'commands')
-rw-r--r--commands/benchmark.go66
-rw-r--r--commands/hugo.go2
2 files changed, 42 insertions, 26 deletions
diff --git a/commands/benchmark.go b/commands/benchmark.go
index 4f1041b0e..a31f679e9 100644
--- a/commands/benchmark.go
+++ b/commands/benchmark.go
@@ -23,50 +23,66 @@ import (
jww "github.com/spf13/jwalterweatherman"
)
-var (
+var _ cmder = (*benchmarkCmd)(nil)
+
+type cmder interface {
+ getCommand() *cobra.Command
+}
+
+type benchmarkCmd struct {
benchmarkTimes int
cpuProfileFile string
memProfileFile string
-)
-var benchmarkCmd = &cobra.Command{
- Use: "benchmark",
- Short: "Benchmark Hugo by building a site a number of times.",
- Long: `Hugo can build a site many times over and analyze the running process
-creating a benchmark.`,
+ cmd *cobra.Command
+}
+
+func (c *benchmarkCmd) getCommand() *cobra.Command {
+ return c.cmd
}
-func init() {
- initHugoBuilderFlags(benchmarkCmd)
- initBenchmarkBuildingFlags(benchmarkCmd)
+func newBenchmarkCmd() *benchmarkCmd {
+ cmd := &cobra.Command{
+ Use: "benchmark",
+ Short: "Benchmark Hugo by building a site a number of times.",
+ Long: `Hugo can build a site many times over and analyze the running process
+creating a benchmark.`,
+ }
+
+ initHugoBuilderFlags(cmd)
+ initBenchmarkBuildingFlags(cmd)
+
+ c := &benchmarkCmd{cmd: cmd}
+
+ cmd.Flags().StringVar(&c.cpuProfileFile, "cpuprofile", "", "path/filename for the CPU profile file")
+ cmd.Flags().StringVar(&c.memProfileFile, "memprofile", "", "path/filename for the memory profile file")
+ cmd.Flags().IntVarP(&c.benchmarkTimes, "count", "n", 13, "number of times to build the site")
- benchmarkCmd.Flags().StringVar(&cpuProfileFile, "cpuprofile", "", "path/filename for the CPU profile file")
- benchmarkCmd.Flags().StringVar(&memProfileFile, "memprofile", "", "path/filename for the memory profile file")
- benchmarkCmd.Flags().IntVarP(&benchmarkTimes, "count", "n", 13, "number of times to build the site")
+ cmd.RunE = c.benchmark
- benchmarkCmd.RunE = benchmark
+ return c
}
-func benchmark(cmd *cobra.Command, args []string) error {
+func (c *benchmarkCmd) benchmark(cmd *cobra.Command, args []string) error {
cfgInit := func(c *commandeer) error {
return nil
}
- c, err := InitializeConfig(false, cfgInit, benchmarkCmd)
+ comm, err := InitializeConfig(false, cfgInit, c.cmd)
if err != nil {
return err
}
var memProf *os.File
- if memProfileFile != "" {
- memProf, err = os.Create(memProfileFile)
+ if c.memProfileFile != "" {
+ memProf, err = os.Create(c.memProfileFile)
if err != nil {
return err
}
}
var cpuProf *os.File
- if cpuProfileFile != "" {
- cpuProf, err = os.Create(cpuProfileFile)
+ if c.cpuProfileFile != "" {
+ cpuProf, err = os.Create(c.cpuProfileFile)
if err != nil {
return err
}
@@ -81,8 +97,8 @@ func benchmark(cmd *cobra.Command, args []string) error {
}
t := time.Now()
- for i := 0; i < benchmarkTimes; i++ {
- if err = c.resetAndBuildSites(); err != nil {
+ for i := 0; i < c.benchmarkTimes; i++ {
+ if err = comm.resetAndBuildSites(); err != nil {
return err
}
}
@@ -102,9 +118,9 @@ func benchmark(cmd *cobra.Command, args []string) error {
totalMallocs := memStats.Mallocs - mallocs
jww.FEEDBACK.Println()
- jww.FEEDBACK.Printf("Average time per operation: %vms\n", int(1000*totalTime.Seconds()/float64(benchmarkTimes)))
- jww.FEEDBACK.Printf("Average memory allocated per operation: %vkB\n", totalMemAllocated/uint64(benchmarkTimes)/1024)
- jww.FEEDBACK.Printf("Average allocations per operation: %v\n", totalMallocs/uint64(benchmarkTimes))
+ jww.FEEDBACK.Printf("Average time per operation: %vms\n", int(1000*totalTime.Seconds()/float64(c.benchmarkTimes)))
+ jww.FEEDBACK.Printf("Average memory allocated per operation: %vkB\n", totalMemAllocated/uint64(c.benchmarkTimes)/1024)
+ jww.FEEDBACK.Printf("Average allocations per operation: %v\n", totalMallocs/uint64(c.benchmarkTimes))
return nil
}
diff --git a/commands/hugo.go b/commands/hugo.go
index ec05b7a35..e6c2771fa 100644
--- a/commands/hugo.go
+++ b/commands/hugo.go
@@ -198,7 +198,7 @@ func AddCommands() {
HugoCmd.AddCommand(envCmd)
HugoCmd.AddCommand(configCmd)
HugoCmd.AddCommand(checkCmd)
- HugoCmd.AddCommand(benchmarkCmd)
+ HugoCmd.AddCommand(newBenchmarkCmd().getCommand())
HugoCmd.AddCommand(convertCmd)
HugoCmd.AddCommand(newCmd)
HugoCmd.AddCommand(listCmd)