示例#1
0
        public (Action tritonAction, Action nluaAction) Benchmark_Results(Triton.Lua triton, NLua.Lua nlua)
        {
            void Triton() => triton.DoString("return 1, 2, 3, 4, 5");
            void NLua() => nlua.DoString("return 1, 2, 3, 4, 5");

            return(Triton, NLua);
        }
        public (Action tritonAction, Action nluaAction) Benchmark_WriteNumber(Triton.Lua triton, NLua.Lua nlua)
        {
            void Triton() => triton["test"] = 0.0;
            void NLua() => nlua["test"]     = 0.0;

            return(Triton, NLua);
        }
        public (Action tritonAction, Action nluaAction) Benchmark_WriteString(Triton.Lua triton, NLua.Lua nlua)
        {
            void Triton() => triton["test"] = "test";
            void NLua() => nlua["test"]     = "test";

            return(Triton, NLua);
        }
示例#4
0
        public (Action tritonAction, Action nluaAction) Benchmark_NoResults(Triton.Lua triton, NLua.Lua nlua)
        {
            void Triton() => triton.DoString("test = 0");
            void NLua() => nlua.DoString("test = 0");

            return(Triton, NLua);
        }
        public (Action tritonAction, Action nluaAction) Benchmark_WriteObject(Triton.Lua triton, NLua.Lua nlua)
        {
            void Triton() => triton["test"] = new object();
            void NLua() => nlua["test"]     = new object();

            return(Triton, NLua);
        }
        public (Action tritonAction, Action nluaAction) Benchmark_WriteBoolean(Triton.Lua triton, NLua.Lua nlua)
        {
            void Triton() => triton["test"] = false;
            void NLua() => nlua["test"]     = false;

            return(Triton, NLua);
        }
        public (Action tritonAction, Action nluaAction) Benchmark_WriteReference(Triton.Lua triton, NLua.Lua nlua)
        {
            var tritonFunction = triton.CreateFunction("");
            var nluaFunction   = nlua.LoadString("", "test");

            void Triton() => triton["test"] = tritonFunction;
            void NLua() => nlua["test"]     = nluaFunction;

            return(Triton, NLua);
        }
        public (Action tritonAction, Action nluaAction) Benchmark_WriteObject(Triton.Lua triton, NLua.Lua nlua)
        {
            var tritonTable = triton.CreateTable();
            var nluaTable   = (NLua.LuaTable)nlua.DoString("return {}")[0];

            void Triton() => tritonTable["test"] = new object();
            void NLua() => nluaTable["test"]     = new object();

            return(Triton, NLua);
        }
示例#9
0
        public (Action tritonAction, Action nluaAction) Benchmark_WriteInstance(Triton.Lua triton, NLua.Lua nlua)
        {
            triton["test"] = new TestClass();
            nlua["test"]   = new TestClass();
            var tritonFunction = triton.CreateFunction("test.x = 0");
            var nluaFunction   = nlua.LoadString("test.x = 0", "test");

            void Triton() => tritonFunction.Call();
            void NLua() => nluaFunction.Call();

            return(Triton, NLua);
        }
示例#10
0
        public (Action tritonAction, Action nluaAction) Benchmark_WriteStatic(Triton.Lua triton, NLua.Lua nlua)
        {
            triton.ImportType(typeof(TestClass));
            nlua.DoString("TestClass = luanet.import_type('Triton.Benchmarks.Binding.FieldBenchmark+TestClass')");
            var tritonFunction = triton.CreateFunction("TestClass.X = 0");
            var nluaFunction   = nlua.LoadString("TestClass.X = 0", "test");

            void Triton() => tritonFunction.Call();
            void NLua() => nluaFunction.Call();

            return(Triton, NLua);
        }
示例#11
0
        public (Action tritonAction, Action nluaAction) Benchmark_Write(Triton.Lua triton, NLua.Lua nlua)
        {
            triton["test"] = new int[10];
            nlua["test"]   = new int[10];
            var tritonFunction = triton.CreateFunction("test[0] = 10");
            var nluaFunction   = nlua.LoadString("test[0] = 10", "test");

            void Triton() => tritonFunction.Call();
            void NLua() => nluaFunction.Call();

            return(Triton, NLua);
        }
示例#12
0
        public (Action tritonAction, Action nluaAction) Benchmark_WriteReference(Triton.Lua triton, NLua.Lua nlua)
        {
            var tritonTable    = triton.CreateTable();
            var nluaTable      = (NLua.LuaTable)nlua.DoString("return {}")[0];
            var tritonFunction = triton.CreateFunction("");
            var nluaFunction   = nlua.LoadString("", "test");

            void Triton() => tritonTable["test"] = tritonFunction;
            void NLua() => nluaTable["test"]     = nluaFunction;

            return(Triton, NLua);
        }
示例#13
0
        public (Action tritonAction, Action nluaAction) Benchmark_UnaryOperator(Triton.Lua triton, NLua.Lua nlua)
        {
            triton["c"] = new Complex(1, 1);
            nlua["c"]   = new Complex(1, 1);
            var tritonFunction = triton.CreateFunction("x = -c");
            var nluaFunction   = nlua.LoadString("x = -c", "test");

            void Triton() => tritonFunction.Call();
            void NLua() => nluaFunction.Call();

            return(Triton, NLua);
        }
示例#14
0
        public (Action tritonAction, Action nluaAction) Benchmark_ReadNil(Triton.Lua triton, NLua.Lua nlua)
        {
            void Triton()
            {
                var t = triton["test"];
            }

            void NLua()
            {
                var t = nlua["test"];
            }

            return(Triton, NLua);
        }
示例#15
0
        public (Action tritonAction, Action nluaAction) Benchmark_ReadNil(Triton.Lua triton, NLua.Lua nlua)
        {
            var tritonTable = triton.CreateTable();
            var nluaTable   = (NLua.LuaTable)nlua.DoString("return {}")[0];

            void Triton()
            {
                var t = triton["test"];
            }

            void NLua()
            {
                var t = nluaTable["test"];
            }

            return(Triton, NLua);
        }
示例#16
0
        public (Action tritonAction, Action nluaAction) Benchmark_ReadReference(Triton.Lua triton, NLua.Lua nlua)
        {
            triton.DoString("test = function() end");
            nlua.DoString("test = function() end");

            void Triton()
            {
                var t = triton["test"];
            }

            void NLua()
            {
                var t = nlua["test"];
            }

            return(Triton, NLua);
        }
示例#17
0
        public (Action tritonAction, Action nluaAction) Benchmark_ReadBoolean(Triton.Lua triton, NLua.Lua nlua)
        {
            triton["test"] = false;
            nlua["test"]   = false;

            void Triton()
            {
                var t = triton["test"];
            }

            void NLua()
            {
                var t = nlua["test"];
            }

            return(Triton, NLua);
        }
示例#18
0
        public (Action tritonAction, Action nluaAction) Benchmark_ReadObject(Triton.Lua triton, NLua.Lua nlua)
        {
            triton["test"] = new object();
            nlua["test"]   = new object();

            void Triton()
            {
                var t = triton["test"];
            }

            void NLua()
            {
                var t = nlua["test"];
            }

            return(Triton, NLua);
        }
示例#19
0
        public (Action tritonAction, Action nluaAction) Benchmark_ReadReference(Triton.Lua triton, NLua.Lua nlua)
        {
            var tritonTable = triton.CreateTable();
            var nluaTable   = (NLua.LuaTable)nlua.DoString("return {}")[0];

            tritonTable["test"] = triton.CreateFunction("");
            nluaTable["test"]   = nlua.LoadString("", "test");

            void Triton()
            {
                var t = tritonTable["test"];
            }

            void NLua()
            {
                var t = nluaTable["test"];
            }

            return(Triton, NLua);
        }
示例#20
0
        static void Main(string[] args)
        {
            var benchmarkTypes = typeof(Program).Assembly.GetExportedTypes().Where(t => !t.IsAbstract);

            foreach (var benchmarkType in benchmarkTypes)
            {
                object benchmark;
                try {
                    benchmark = Activator.CreateInstance(benchmarkType);
                } catch (MissingMethodException) {
                    continue;
                }

                var benchmarkMethods = benchmarkType.GetMethods().Where(m => m.Name.StartsWith("Benchmark_")).ToList();
                if (benchmarkMethods.Count == 0)
                {
                    continue;
                }

                Console.ForegroundColor = ConsoleColor.Cyan;
                Console.WriteLine($"{benchmarkType.Name}:");
                foreach (var benchmarkMethod in benchmarkMethods)
                {
                    using (var triton = new Triton.Lua())
                        using (var nlua = new NLua.Lua()) {
                            nlua.DoString("luanet.load_assembly('Triton.Benchmarks')");

                            var(tritonAction, nluaAction) =
                                ((Action tritonAction, Action nluaAction))benchmarkMethod.Invoke(benchmark, new object[] { triton, nlua });
                            Test(benchmarkMethod.Name, tritonAction, nluaAction);
                        }
                }
            }

            Console.ReadKey(true);
        }
示例#21
0
        public (Action tritonAction, Action nluaAction) Benchmark_CallInstance_Results(Triton.Lua triton, NLua.Lua nlua)
        {
            triton["test"] = new TestClass();
            nlua["test"]   = new TestClass();
            var tritonFunction = triton.CreateFunction("x, y = test:y2()");
            var nluaFunction   = nlua.LoadString("x, y = test:y2()", "test");

            void Triton() => tritonFunction.Call();
            void NLua() => nluaFunction.Call();

            return(Triton, NLua);
        }