Exemplo n.º 1
0
        [TestMethod] public unsafe void Callback()
        {
            const uint iterations = 2048 * 2048;

            using (var test = new CallbackTest())
            {
                Trace.WriteLine(iterations.ToString("N0") + " iterations");

                // jit
                CallbackTest.MakeNoop(0)();
                test.CallViaThunk(CallbackTest.MakeNoop(0));
                test.CallViaGchandle(CallbackTest.MakeNoop(0));

                var timer = Stopwatch.StartNew();
                for (uint i = 0; i < iterations; ++i)
                {
                    CallbackTest.MakeNoop(i)();
                }
                timer.Stop();
                Display(timer, "bare call");


                timer.Reset(); timer.Start();
                for (uint i = 0; i < iterations; ++i)
                {
                    test.CallViaThunk(CallbackTest.MakeNoop(i));
                }
                timer.Stop();
                Display(timer, "CallViaThunk");


                timer.Reset(); timer.Start();
                for (uint i = 0; i < iterations; ++i)
                {
                    test.CallViaGchandle(CallbackTest.MakeNoop(i));
                }
                timer.Stop();
                Display(timer, "CallViaGchandle");

                /*
                 *      4,194,304 iterations
                 *      bare call: 51ms
                 *      CallViaThunk: 4468ms
                 *      CallViaGchandle: 1911ms
                 */
            }
        }
Exemplo n.º 2
0
 // Use this for initialization
 void Start()
 {
     Instance = this;
 }
Exemplo n.º 3
0
 // Use this for initialization
 void Start()
 {
     callbackTest = GetComponent <CallbackTest>();
 }