public static void RunPerfTest()
        {
            var preInvokeInfo = string.Empty;
            var postInvokeInfo = string.Empty;
            var exceptionHandlerInfo = string.Empty;
            var cc = new CrossCuttingConcerns();
            cc.PreInvoke = (instanceId, methodName, parameters) =>
            {
                preInvokeInfo = methodName + "_preInvokeInfo";
            };
            cc.PostInvoke = (instanceId, methodName, parameters) =>
            {
                postInvokeInfo = methodName + "_postInvokeInfo";
            };
            cc.ExceptionHandler = (instanceId, methodName, parameters, exception) =>
            {
                exceptionHandlerInfo = methodName + "_exceptionHandlerInfo";
                return false; //do not throw
            };
            var t = Interceptor.Intercept<ISimpleMath>(new SimpleMath(), cc);
            var a = t.Add(1, 2);

            var sw = Stopwatch.StartNew();
            var t2 = Interceptor.Intercept<ISimpleMath2>(new SimpleMath2(), cc);
            sw.Stop();
            var interceptCtorTicks = sw.ElapsedTicks;
            var interceptCtorTs = sw.Elapsed;
            sw.Restart();
            var c = t2.Add(2, 3);
            sw.Stop();
            var interceptAddTicks = sw.ElapsedTicks;
            var interceptAddTs = sw.Elapsed;

            sw.Restart();
            var t3 = Interceptor.Intercept<ISimpleMath2>(new SimpleMath2(), cc);
            sw.Stop();
            var interceptCtorTicks2 = sw.ElapsedTicks;
            var interceptCtorTs2 = sw.Elapsed;
            sw.Restart();
            var c2 = t3.Add(2, 3);
            sw.Stop();
            var interceptAddTicks2 = sw.ElapsedTicks;
            var interceptAddTs2 = sw.Elapsed;

            sw.Restart();
            var t4 = new SimpleMath2();
            sw.Stop();
            var plainCtorTicks = sw.ElapsedTicks;
            var plainCtorTs = sw.Elapsed;
            sw.Restart();
            var c3 = t4.Add(2, 3);
            sw.Stop();
            var plainAddTicks = sw.ElapsedTicks;
            var plainAddTs = sw.Elapsed;

            Console.WriteLine("Ticks plain vs intercepted first ctr:  {0}, {1}", plainCtorTicks, interceptCtorTicks);
            Console.WriteLine("Ticks plain vs intercepted first add:  {0}, {1}", plainAddTicks, interceptAddTicks);
            Console.WriteLine("Ticks plain vs intercepted second ctr: {0}, {1}", plainCtorTicks, interceptCtorTicks2);
            Console.WriteLine("Ticks plain vs intercepted second add: {0}, {1}", plainAddTicks, interceptAddTicks2);

            Console.WriteLine("TS plain vs intercepted first ctr:  {0}, {1}", plainCtorTs, interceptCtorTs);
            Console.WriteLine("TS plain vs intercepted first add:  {0}, {1}", plainAddTs, interceptAddTs);

            Console.WriteLine("TS plain vs intercepted second ctr: {0}, {1}", plainCtorTs, interceptCtorTs2);
            Console.WriteLine("TS plain vs intercepted second add: {0}, {1}", plainAddTs, interceptAddTs2);
        }
Пример #2
0
        public static void RunPerfTest()
        {
            var preInvokeInfo        = string.Empty;
            var postInvokeInfo       = string.Empty;
            var exceptionHandlerInfo = string.Empty;
            var cc = new CrossCuttingConcerns();

            cc.PreInvoke = (instanceId, methodName, parameters) =>
            {
                preInvokeInfo = methodName + "_preInvokeInfo";
            };
            cc.PostInvoke = (instanceId, methodName, parameters) =>
            {
                postInvokeInfo = methodName + "_postInvokeInfo";
            };
            cc.ExceptionHandler = (instanceId, methodName, parameters, exception) =>
            {
                exceptionHandlerInfo = methodName + "_exceptionHandlerInfo";
                return(false); //do not throw
            };
            var t = Interceptor.Intercept <ISimpleMath>(new SimpleMath(), cc);
            var a = t.Add(1, 2);

            var sw = Stopwatch.StartNew();
            var t2 = Interceptor.Intercept <ISimpleMath2>(new SimpleMath2(), cc);

            sw.Stop();
            var interceptCtorTicks = sw.ElapsedTicks;
            var interceptCtorTs    = sw.Elapsed;

            sw.Restart();
            var c = t2.Add(2, 3);

            sw.Stop();
            var interceptAddTicks = sw.ElapsedTicks;
            var interceptAddTs    = sw.Elapsed;

            sw.Restart();
            var t3 = Interceptor.Intercept <ISimpleMath2>(new SimpleMath2(), cc);

            sw.Stop();
            var interceptCtorTicks2 = sw.ElapsedTicks;
            var interceptCtorTs2    = sw.Elapsed;

            sw.Restart();
            var c2 = t3.Add(2, 3);

            sw.Stop();
            var interceptAddTicks2 = sw.ElapsedTicks;
            var interceptAddTs2    = sw.Elapsed;

            sw.Restart();
            var t4 = new SimpleMath2();

            sw.Stop();
            var plainCtorTicks = sw.ElapsedTicks;
            var plainCtorTs    = sw.Elapsed;

            sw.Restart();
            var c3 = t4.Add(2, 3);

            sw.Stop();
            var plainAddTicks = sw.ElapsedTicks;
            var plainAddTs    = sw.Elapsed;

            Console.WriteLine("Ticks plain vs intercepted first ctr:  {0}, {1}", plainCtorTicks, interceptCtorTicks);
            Console.WriteLine("Ticks plain vs intercepted first add:  {0}, {1}", plainAddTicks, interceptAddTicks);
            Console.WriteLine("Ticks plain vs intercepted second ctr: {0}, {1}", plainCtorTicks, interceptCtorTicks2);
            Console.WriteLine("Ticks plain vs intercepted second add: {0}, {1}", plainAddTicks, interceptAddTicks2);

            Console.WriteLine("TS plain vs intercepted first ctr:  {0}, {1}", plainCtorTs, interceptCtorTs);
            Console.WriteLine("TS plain vs intercepted first add:  {0}, {1}", plainAddTs, interceptAddTs);

            Console.WriteLine("TS plain vs intercepted second ctr: {0}, {1}", plainCtorTs, interceptCtorTs2);
            Console.WriteLine("TS plain vs intercepted second add: {0}, {1}", plainAddTs, interceptAddTs2);
        }