aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-05-08 00:23:10 +0900
committerFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-05-08 00:23:10 +0900
commit586b02a82282ac55f354a0b021ca695a8b3bf028 (patch)
treefd652b12b72304ed8cc7c58d4641e46f2e231f3f
parent4107b20d1221f1d868c2b47828a4ea825b11e4a9 (diff)
downloadkati-586b02a82282ac55f354a0b021ca695a8b3bf028.tar.gz
split -kati_eval_stats from -kati_stats
add shell func time (in eval time) in -kati_stats
-rw-r--r--func.go5
-rw-r--r--main.go3
-rw-r--r--stats.go4
3 files changed, 10 insertions, 2 deletions
diff --git a/func.go b/func.go
index e2352c8..214e6b5 100644
--- a/func.go
+++ b/func.go
@@ -10,6 +10,7 @@ import (
"sort"
"strconv"
"strings"
+ "time"
)
// Func is a make function.
@@ -660,6 +661,8 @@ func (f *funcOr) Eval(w io.Writer, ev *Evaluator) {
// http://www.gnu.org/software/make/manual/make.html#Shell-Function
type funcShell struct{ fclosure }
+var shellFuncTime time.Duration
+
func (f *funcShell) Arity() int { return 1 }
func (f *funcShell) Eval(w io.Writer, ev *Evaluator) {
@@ -680,7 +683,9 @@ func (f *funcShell) Eval(w io.Writer, ev *Evaluator) {
Args: cmdline,
Stderr: os.Stderr,
}
+ t := time.Now()
out, err := cmd.Output()
+ shellFuncTime += time.Now().Sub(t)
if err != nil {
Log("$(shell %q) failed: %q", arg, err)
}
diff --git a/main.go b/main.go
index d89c986..d8a9592 100644
--- a/main.go
+++ b/main.go
@@ -21,6 +21,7 @@ var (
heapprofile string
memstats string
katiStatsFlag bool
+ katiEvalStatsFlag bool
loadJson string
saveJson string
loadGob string
@@ -48,6 +49,7 @@ func parseFlags() {
flag.StringVar(&heapprofile, "kati_heapprofile", "", "write heap profile to `file`")
flag.StringVar(&memstats, "kati_memstats", "", "Show memstats with given templates")
flag.BoolVar(&katiStatsFlag, "kati_stats", false, "Show a bunch of statistics")
+ flag.BoolVar(&katiEvalStatsFlag, "kati_eval_stats", false, "Show eval statistics")
flag.BoolVar(&eagerCmdEvalFlag, "eager_cmd_eval", false, "Eval commands first.")
flag.BoolVar(&syntaxCheckOnlyFlag, "c", false, "Syntax check only.")
flag.StringVar(&queryFlag, "query", "", "Show the target info")
@@ -171,6 +173,7 @@ func getDepGraph(clvars []string, targets []string) ([]*DepNode, Vars) {
vars.Merge(er.vars)
LogStats("eval time: %q", time.Now().Sub(startTime))
+ LogStats("shell func time: %q", shellFuncTime)
startTime = time.Now()
db := NewDepBuilder(er, vars)
diff --git a/stats.go b/stats.go
index ca3b4ae..b50b26e 100644
--- a/stats.go
+++ b/stats.go
@@ -16,7 +16,7 @@ type statsData struct {
var stats = map[string]statsData{}
func addStats(name string, v Value, t time.Time) {
- if !katiStatsFlag {
+ if !katiEvalStatsFlag {
return
}
d := time.Now().Sub(t)
@@ -31,7 +31,7 @@ func addStats(name string, v Value, t time.Time) {
}
func dumpStats() {
- if !katiStatsFlag {
+ if !katiEvalStatsFlag {
return
}
var sv byTotalTime