From e15e72265b82b6ca42d99f190193d6708ab72318 Mon Sep 17 00:00:00 2001 From: onheap Date: Mon, 21 Nov 2022 22:28:41 +0800 Subject: [PATCH] [engine] update equals & reorder switch case --- engine.go | 14 +++++++------- engine_test.go | 4 ++-- operator.go | 8 ++++---- util.go | 19 ------------------- 4 files changed, 13 insertions(+), 32 deletions(-) diff --git a/engine.go b/engine.go index 48fbdc2..8ce8944 100644 --- a/engine.go +++ b/engine.go @@ -162,13 +162,6 @@ func (e *Expr) Eval(ctx *Ctx) (res Value, err error) { if err != nil { return } - case selector: - res, err = ctx.Get(curt.selKey, curt.value.(string)) - if err != nil { - return - } - case constant: - res = curt.value case operator: cCnt := int16(curt.childCnt) osTop = osTop - cCnt @@ -184,6 +177,13 @@ func (e *Expr) Eval(ctx *Ctx) (res Value, err error) { if err != nil { return } + case selector: + res, err = ctx.Get(curt.selKey, curt.value.(string)) + if err != nil { + return + } + case constant: + res = curt.value case cond: res, osTop = os[osTop], osTop-1 res, err = curt.operator(ctx, []Value{res}) diff --git a/engine_test.go b/engine_test.go index 3634b3f..e04c828 100644 --- a/engine_test.go +++ b/engine_test.go @@ -1126,11 +1126,11 @@ func TestExpr_TryEval(t *testing.T) { func TestRandomExpressions(t *testing.T) { const ( - size = 30000 + size = 4000000 level = 53 step = size / 100 showSample = false - printProgress = false + printProgress = true ) const ( diff --git a/operator.go b/operator.go index ac54a05..370a624 100644 --- a/operator.go +++ b/operator.go @@ -295,14 +295,14 @@ func (c comparison) execute(_ *Ctx, params []Value) (Value, error) { } func comparisonEquals(_ *Ctx, params []Value) (Value, error) { - if len(params) < 2 { - return nil, errCnt2(equals, params) - } - if len(params) == 2 { return params[0] == params[1], nil } + if len(params) < 2 { + return nil, errCnt2(equals, params) + } + v := params[0] for _, p := range params { if v != p { diff --git a/util.go b/util.go index 3e28c58..ad89a7c 100644 --- a/util.go +++ b/util.go @@ -652,25 +652,6 @@ func DumpTable(expr *Expr, skipEventNode bool) string { return sb.String() } -type SelectorKeys struct { - SelKey SelectorKey - StrKey string -} - -func GetSelectorKeys(e *Expr) []SelectorKeys { - res := make([]SelectorKeys, len(e.nodes)/2) - - for _, n := range e.nodes { - if n.getNodeType() == selector { - res = append(res, SelectorKeys{ - SelKey: n.selKey, - StrKey: n.value.(string), - }) - } - } - return res -} - func HandleDebugEvent(e *Expr) { go func() { var prev LoopEventData