示例#1
0
        static void RunBenchmark(Plugin plugin)
        {
            object ret;
            var iterations = 100000;
            var t = DateTime.Now;
            for (var i = 0; i < iterations; i++)
            {
                plugin.DirectCallHook("OnMy", out ret, new[] { "test" });
                plugin.DirectCallHook("OnMy2", out ret, new[] { "test2" });
                plugin.DirectCallHook("OnMy3", out ret, new[] { "test3" });
                plugin.DirectCallHook("OnMy4", out ret, new[] { "test4" });
                plugin.DirectCallHook("OnMy5", out ret, new[] { "test5" });
                plugin.DirectCallHook("OnMy6", out ret, new[] { "test6" });
                plugin.DirectCallHook("OnMy7", out ret, new[] { "test7" });
                plugin.DirectCallHook("OnMy8", out ret, new[] { "test8" });
                plugin.DirectCallHook("OnMy9", out ret, new[] { "test9" });
                plugin.DirectCallHook("OnYour", out ret, new[] { "test0" });
            }
            Puts($"Calling {10 * iterations} hooks directly took {DateTime.Now - t}");

            t = DateTime.Now;
            for (var i = 0; i < iterations; i++)
            {
                plugin.CallHook("OnMy", out ret, new[] { "test" });
                plugin.CallHook("OnMy2", out ret, new[] { "test2" });
                plugin.CallHook("OnMy3", out ret, new[] { "test3" });
                plugin.CallHook("OnMy4", out ret, new[] { "test4" });
                plugin.CallHook("OnMy5", out ret, new[] { "test5" });
                plugin.CallHook("OnMy6", out ret, new[] { "test6" });
                plugin.CallHook("OnMy7", out ret, new[] { "test7" });
                plugin.CallHook("OnMy8", out ret, new[] { "test8" });
                plugin.CallHook("OnMy9", out ret, new[] { "test9" });
                plugin.CallHook("OnYour", out ret, new[] { "test0" });
            }
            Puts($"Calling {10 * iterations} hooks with Invoke took {DateTime.Now - t}");
        }