public void ComparePerformanceOfExpressionCompileVersusCreateMetaClosure() { const int ITERATIONS = 100000; int xx = 2; System.Linq.Expressions.Expression <Func <int, int, int> > multiplierByClosureConstantExpression = (y, z) => xx * (y + z); DateTime start; TimeSpan duration; //start = DateTime.Now; //for (int i = 0; i < ITERATIONS; i++) //{ // multiplierByClosureConstantExpression.Compile(); //} //duration = DateTime.Now - start; //Console.WriteLine(duration); start = DateTime.Now; for (int i = 0; i < ITERATIONS; i++) { multiplierByClosureConstantExpression.CachedCompile(); } duration = DateTime.Now - start; Console.WriteLine(duration); }
public void ComparePerformanceOfExpressionCompileVersusOpenCachedCompile() { const int ITERATIONS = 100000; System.Linq.Expressions.Expression <Func <int, int, int> > multiplierByOpenConstantExpression = (y, z) => y + z; DateTime start; TimeSpan duration; start = DateTime.Now; for (int i = 0; i < ITERATIONS; i++) { multiplierByOpenConstantExpression.Compile(); } duration = DateTime.Now - start; Console.WriteLine(PerSecond(ITERATIONS, duration)); start = DateTime.Now; for (int i = 0; i < ITERATIONS; i++) { multiplierByOpenConstantExpression.CachedCompile(); } duration = DateTime.Now - start; Console.WriteLine(PerSecond(ITERATIONS, duration)); }