public void ExecutesDelegatePerformance()
        {
            Dictionary<string, object> vars = new Dictionary<string, object>(5);
            WaitCallback noop = delegate (object arg)
                                      {
                                          // noop
                                      };
            vars["noop"] = noop;

            FunctionNode fn = new FunctionNode();
            fn.Text = "noop";
            StringLiteralNode str = new StringLiteralNode();
            str.Text = "theArg";
            fn.addChild(str);

            int ITERATIONS = 10000000;

            StopWatch watch = new StopWatch();
            using (watch.Start("Duration Direct: {0}"))
            {
                for (int i = 0; i < ITERATIONS; i++)
                {
                    ((WaitCallback)vars["noop"])(str.getText());
                }
            }

            using (watch.Start("Duration SpEL: {0}"))
            {
                for (int i = 0; i < ITERATIONS; i++)
                {
                    fn.GetValue(null, vars);
                }
            }
        }
            public LambdaComparer(LambdaExpressionNode lambdaExpression)
            {
                FunctionNode functionNode = new FunctionNode();
                functionNode.Text = "compare";
                VariableNode x = new VariableNode();
                x.Text = "x";
                VariableNode y = new VariableNode();
                y.Text = "y";

                functionNode.addChild(x);
                functionNode.addChild(y);

                _fn = functionNode;
                _variables = new Hashtable();
                _variables.Add( "compare", lambdaExpression );
            }
        public void ExecutesDelegate()
        {
            Dictionary<string, object> vars = new Dictionary<string, object>();
            vars["concat"] = new TestCallback(Concat);

            FunctionNode fn = new FunctionNode();
            fn.Text = "concat";
            StringLiteralNode str = new StringLiteralNode();
            str.Text = "theValue";
            fn.addChild(str);
            StringLiteralNode str2 = new StringLiteralNode();
            str2.Text = "theValue";
            fn.addChild(str2);

            IExpression exp = fn;
            Assert.AreEqual(string.Format("{0},{1},{2}", this.GetHashCode(), str.Text, str2.Text), exp.GetValue(null, vars));
        }
Exemple #4
0
            public LambdaComparer(LambdaExpressionNode lambdaExpression)
            {
                FunctionNode functionNode = new FunctionNode();

                functionNode.Text = "compare";
                VariableNode x = new VariableNode();

                x.Text = "x";
                VariableNode y = new VariableNode();

                y.Text = "y";

                functionNode.addChild(x);
                functionNode.addChild(y);

                _fn        = functionNode;
                _variables = new Dictionary <string, object>();
                _variables.Add("compare", lambdaExpression);
            }
Exemple #5
0
            public LambdaComparer(LambdaExpressionNode lambdaExpression)
            {
                var functionNode = new FunctionNode {
                    Text = "compare"
                };
                var x = new VariableNode {
                    Text = "x"
                };
                var y = new VariableNode {
                    Text = "y"
                };

                functionNode.addChild(x);
                functionNode.addChild(y);

                _fn        = functionNode;
                _variables = new Dictionary <string, object>
                {
                    { "compare", lambdaExpression }
                };
            }
Exemple #6
0
        public void ExecutesDelegate()
        {
            Dictionary <string, object> vars = new Dictionary <string, object>();

            vars["concat"] = new TestCallback(Concat);

            FunctionNode fn = new FunctionNode();

            fn.Text = "concat";
            StringLiteralNode str = new StringLiteralNode();

            str.Text = "theValue";
            fn.addChild(str);
            StringLiteralNode str2 = new StringLiteralNode();

            str2.Text = "theValue";
            fn.addChild(str2);

            IExpression exp = fn;

            Assert.AreEqual(string.Format("{0},{1},{2}", this.GetHashCode(), str.Text, str2.Text), exp.GetValue(null, vars));
        }
Exemple #7
0
        public void ExecutesLambdaFunction()
        {
            Dictionary <string, object> vars = new Dictionary <string, object>();

            Expression.RegisterFunction("ident", "{|n| $n}", vars);

            FunctionNode fn = new FunctionNode();

            fn.Text = "ident";
            StringLiteralNode str = new StringLiteralNode();

            str.Text = "theValue";
            fn.addChild(str);

            IExpression exp = fn;

            Assert.AreEqual(str.Text, exp.GetValue(null, vars));
        }
Exemple #8
0
        public void ExecutesDelegatePerformance()
        {
            Dictionary <string, object> vars = new Dictionary <string, object>(5);
            WaitCallback noop = delegate(object arg)
            {
                // noop
            };

            vars["noop"] = noop;

            FunctionNode fn = new FunctionNode();

            fn.Text = "noop";
            StringLiteralNode str = new StringLiteralNode();

            str.Text = "theArg";
            fn.addChild(str);

            int ITERATIONS = 10000000;

            StopWatch watch = new StopWatch();

            using (watch.Start("Duration Direct: {0}"))
            {
                for (int i = 0; i < ITERATIONS; i++)
                {
                    ((WaitCallback)vars["noop"])(str.getText());
                }
            }

            using (watch.Start("Duration SpEL: {0}"))
            {
                for (int i = 0; i < ITERATIONS; i++)
                {
                    fn.GetValue(null, vars);
                }
            }
        }
        public void ExecutesLambdaFunction()
        {
            Dictionary<string, object> vars = new Dictionary<string, object>();
            Expression.RegisterFunction("ident", "{|n| $n}", vars);

            FunctionNode fn = new FunctionNode();
            fn.Text = "ident";
            StringLiteralNode str = new StringLiteralNode();
            str.Text = "theValue";
            fn.addChild(str);

            IExpression exp = fn;
            Assert.AreEqual(str.Text, exp.GetValue(null, vars));
        }
            public LambdaComparer(LambdaExpressionNode lambdaExpression)
            {
                var functionNode = new FunctionNode {Text = "compare"};
                var x = new VariableNode {Text = "x"};
                var y = new VariableNode {Text = "y"};

                functionNode.addChild(x);
                functionNode.addChild(y);

                _fn = functionNode;
                _variables = new Dictionary<string, object>
                {
                    {"compare", lambdaExpression}
                };
            }