From: Jean Privat Date: Tue, 23 Apr 2013 17:12:20 +0000 (-0400) Subject: bench/lang: add covar/depthnot and fts_nesting X-Git-Tag: v0.6~33^2~11 X-Git-Url: http://nitlanguage.org bench/lang: add covar/depthnot and fts_nesting Signed-off-by: Jean Privat --- diff --git a/benchmarks/languages/bench_base.nit b/benchmarks/languages/bench_base.nit index 7258d18..ce9e3f1 100644 --- a/benchmarks/languages/bench_base.nit +++ b/benchmarks/languages/bench_base.nit @@ -26,7 +26,7 @@ class Generator var classes = new Array[Klass] var dept writable = 5 - var loops writable = 20000 + var loops writable = 50000 var middle writable = 0 var dry writable = false var check writable = false @@ -88,7 +88,7 @@ class Generator write "\t\tif {test} and x >= 0 then" if check then write "\t\tx += 1" write "\telse" - write "\t\t\tx -= 1" + write "\t\t\tx = x - 1 + i - j" write "\t\t\ta = b" write "\t\tend" write "\t\tj += 1" @@ -166,8 +166,9 @@ class Generator var test = "true" if not dry then test = testjava(interfaces) write "\t\t\tif({test} && x>=0) \{" - if check then write "\t\t\t\tx -= 2" - write "\t\t\t\} else \{ x--; a = b;\}" + if check then write "\t\t\t\tx = x + 1;" + #write "\t\t\t\} else \{ x = x - 1 + i - j; a = b;\}" + write "\t\t\t\} else \{ x = x - 1; a = b;\}" write "\t\t}" write "\t\}" write "\tSystem.out.println(x);" @@ -232,7 +233,7 @@ class Generator if not dry then test = testcsharp(interfaces) write "\t\t\tif({test} && x>=0) \{" if check then write "\t\t\t\tx++;" - write "\} else \{ x--; a = b; \};" + write "\} else \{ x = x - 1 + i - j; a = b; \};" write "\t\t}" write "\t\}" write "\tSystem.Console.WriteLine(x);" @@ -295,7 +296,8 @@ class Generator var test = "true" if not dry then test = testscala(interfaces) write "\t\tif ({test} && x>=0) \{" - if check then write "\t\t\tx += 1" + if check then write "\t\t\tx += 1;" + #write "\} else \{ x = x - 1 + i - j; a = b; \}" write "\} else \{ x = x - 1; a = b; \}" write "\t\tj += 1" write "\t\t\}" @@ -339,8 +341,8 @@ class Generator var test = "true" if not dry then test = testcpp write "\t\tif({test} && x>=0) \{" - if check then write "\t\t\tx += 1" - write "\} else \{ x--; a = b;\}" + if check then write "\t\t\tx += 1;" + write "\} else \{ x = x - 1 + i - j; a = b;\}" write "\t\t}" write "\t\}" write "\tstd::cout << x << std::endl;" @@ -442,7 +444,7 @@ class Generator if not dry then test = teste(se) write "\t\t\t\t\tif {test} and then x >= 0 then" if check then write "\t\t\t\t\tx := x + 1" - write "\t\t\t\t\telse x := x - 1; a := b end" + write "\t\t\t\t\telse x := x - 1 + i - j; a := b end" write "\t\t\t\t\tj := j + 1" write "\t\t\t\tend" write "\t\t\t\ti := i + 1" diff --git a/benchmarks/languages/bench_typetest_covar.nit b/benchmarks/languages/bench_typetest_covar.nit new file mode 100644 index 0000000..d0bb2b8 --- /dev/null +++ b/benchmarks/languages/bench_typetest_covar.nit @@ -0,0 +1,97 @@ +#!/usr/bin/env nit + +import bench_base + +class TypeTestCovarGenerator + super Generator + + redef fun initnit(res) + do + for c in classes do + res.add "new {classes.first}[{c}[Root]]" + end + + end + + redef fun testnit + do + return "a isa {classes.first}[{classes[middle]}[Root]]" + end + + redef fun initjava(res, interfaces) + do + + var tagc = "" + if interfaces then tagc = "X" + for c in classes do + res.add "new {tagc}{classes.first}<{c}>()" + end + end + + redef fun testjava(interfaces) + do + return "a instanceof {classes.first}" + end + + redef fun initcsharp(res, interfaces) + do + var tagc = "" + if interfaces then tagc = "X" + for c in classes do + res.add "new {tagc}{classes.first}<{c}>()" + end + end + + redef fun testcsharp(interfaces) + do + return "a is {classes.first}<{classes[middle]}>" + end + + redef fun initscala(res, interfaces) + do + var tagc = "" + if interfaces then tagc = "X" + for c in classes do + res.add "new {tagc}{classes.first}[{c}[Root]]()" + end + end + + redef fun testscala(interfaces) + do + return "a.isInstanceOf[{classes.first}[{classes[middle]}[Root]]]" + end + + redef fun initcpp(res) + do + for c in classes do + res.add "new {classes.first}<{c}*>()" + end + end + + redef fun testcpp + do + write "\t\t\t{classes.first}<{classes[middle]}*> *to = dynamic_cast<{classes.first}<{classes[middle]}*>*>(a);" + return "to != 0" + end + + redef fun inite(res, se) + do + for c in classes do + res.add "create \{{classes.first}[{c}[ROOT]]\} a" + end + end + + redef fun teste(se) + do + write "\t\t\t\t\tto ?= a" + return "to /= Void" + end + + redef fun locale(se) + do + write "\t\t\tto: {classes.first}[{classes[middle]}[ROOT]]" + end +end + +var g = new TypeTestCovarGenerator +g.genall diff --git a/benchmarks/languages/bench_typetest_depth_not.nit b/benchmarks/languages/bench_typetest_depth_not.nit new file mode 100644 index 0000000..633e52e --- /dev/null +++ b/benchmarks/languages/bench_typetest_depth_not.nit @@ -0,0 +1,103 @@ +#!/usr/bin/env nit + +import bench_base +import pipeline + +class TypeTestDepthNotGenerator + super Generator + + redef fun initnit(res) + do + res.add "new {classes.last}[Root]" + for c in classes.skip_tail(1) do + res.add "new {c}[Root]" + end + end + + redef fun testnit + do + return "not a isa {classes.last}[Root]" + end + + redef fun initjava(res, interfaces) + do + + var tagc = "" + if interfaces then tagc = "X" + res.add "new {tagc}{classes.last}()" + for c in classes.skip_tail(1) do + res.add "new {tagc}{c}()" + end + end + + redef fun testjava(interfaces) + do + return "!(a instanceof {classes.last})" + end + + redef fun initcsharp(res, interfaces) + do + var tagc = "" + if interfaces then tagc = "X" + res.add "new {tagc}{classes.last}()" + for c in classes.skip_tail(1) do + res.add "new {tagc}{c}()" + end + end + + redef fun testcsharp(interfaces) + do + return "!(a is {classes.last})" + end + + redef fun initscala(res, interfaces) + do + var tagc = "" + if interfaces then tagc = "X" + res.add "new {tagc}{classes.last}[Root]()" + for c in classes.skip_tail(1) do + res.add "new {tagc}{c}[Root]()" + end + end + + redef fun testscala(interfaces) + do + return "!a.isInstanceOf[{classes.last}[Root]]" + end + + redef fun initcpp(res) + do + res.add "new {classes.last}()" + for c in classes.skip_tail(1) do + res.add "new {c}()" + end + end + + redef fun testcpp + do + write "\t\t\t{classes.last} *to = dynamic_cast<{classes.last}*>(a);" + return "to == 0" + end + + redef fun inite(res, se) + do + res.add "create \{{classes.last}[ROOT]\} a" + for c in classes.skip_tail(1) do + res.add "create \{{c}[ROOT]\} a" + end + end + + redef fun teste(se) + do + write "\t\t\t\t\tto ?= a" + return "to = Void" + end + + redef fun locale(se) + do + write "\t\t\tto: {classes.last}[ROOT]" + end +end + +var g = new TypeTestDepthNotGenerator +g.genall diff --git a/benchmarks/languages/bench_typetest_fts_nesting.nit b/benchmarks/languages/bench_typetest_fts_nesting.nit new file mode 100644 index 0000000..8cb2df0 --- /dev/null +++ b/benchmarks/languages/bench_typetest_fts_nesting.nit @@ -0,0 +1,133 @@ +#!/usr/bin/env nit + +import bench_base + +class TypeTestFtsNestingGenerator + super Generator + + fun clanit(i: Int): String + do + var s = new Buffer + s.append("{classes.first}[" * i) + s.append("Root") + s.append("]" * i) + return s.to_s + end + + redef fun initnit(res) + do + for i in [1..dept] do + res.add "new {clanit(i)}" + end + + end + + redef fun testnit + do + return "a isa {clanit(middle)}" + end + + fun clajava(i: Int): String + do + var s = new Buffer + s.append("{classes.first}<" * i) + s.append("Root") + s.append(">" * i) + return s.to_s + end + + redef fun initjava(res, interfaces) + do + + var tagc = "" + if interfaces then tagc = "X" + for i in [1..dept] do + res.add "new {tagc}{clajava(i)}()" + end + end + + redef fun testjava(interfaces) + do + return "a instanceof {classes.first}" + end + + redef fun initcsharp(res, interfaces) + do + var tagc = "" + if interfaces then tagc = "X" + for i in [1..dept] do + res.add "new {tagc}{clajava(i)}()" + end + end + + redef fun testcsharp(interfaces) + do + return "a is {clajava(middle)}" + end + + redef fun initscala(res, interfaces) + do + var tagc = "" + if interfaces then tagc = "X" + for i in [1..dept] do + res.add "new {tagc}{clanit(i)}()" + end + end + + redef fun testscala(interfaces) + do + return "a.isInstanceOf[{clanit(middle)}]" + end + + fun clacpp(i: Int): String + do + var s = new Buffer + s.append("{classes.first}<" * i) + s.append("Root") + s.append("*>" * i) + return s.to_s + end + + redef fun initcpp(res) + do + for i in [1..dept] do + res.add "new {clacpp(i)}()" + end + end + + redef fun testcpp + do + write "\t\t\t{clacpp(middle)} *to = dynamic_cast<{clacpp(middle)}*>(a);" + return "to != 0" + end + + fun clae(i: Int): String + do + var s = new Buffer + s.append("{classes.first}[" * i) + s.append("ROOT") + s.append("]" * i) + return s.to_s + end + + redef fun inite(res, se) + do + for i in [1..dept] do + res.add "create \{{clae(i)}\} a" + end + end + + redef fun teste(se) + do + write "\t\t\t\t\tto ?= a" + return "to /= Void" + end + + redef fun locale(se) + do + write "\t\t\tto: {clae(middle)}" + end +end + +var g = new TypeTestFtsNestingGenerator +g.genall