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); } } }