From b06cd9d54075f942445f0030da9993368a1f49ab Mon Sep 17 00:00:00 2001 From: Fumitoshi Ukai Date: Thu, 7 May 2015 12:56:12 +0900 Subject: use sync.Pool for temporal bytes.Buffer. remove ev.Value and ev.Values before: scanblock: 8.22s (14.83%) runtime.MScan_Sweep 4.99s(9.00%) after: scanblock: 7.42s (12.95%) runtime.MScan_Sweep 4.57s(7.98%) --- worker.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'worker.go') diff --git a/worker.go b/worker.go index 456cf3d..5d3472f 100644 --- a/worker.go +++ b/worker.go @@ -113,7 +113,10 @@ func evalCmd(ev *Evaluator, r runner, s string) []runner { if err != nil { panic(fmt.Errorf("parse cmd %q: %v", r.cmd, err)) } - cmds := string(ev.Value(expr)) + buf := newBuf() + expr.Eval(buf, ev) + cmds := buf.String() + freeBuf(buf) var runners []runner for _, cmd := range strings.Split(cmds, "\n") { if len(runners) > 0 && strings.HasSuffix(runners[len(runners)-1].cmd, "\\") { -- cgit v1.2.3