Beispiel #1
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);
                }
            }
        }