diff --git a/.gitignore b/.gitignore index cb286f22930..40154ad0d32 100644 --- a/.gitignore +++ b/.gitignore @@ -118,3 +118,4 @@ dev-display.hxml tests/sourcemaps/bin /*_plugin.ml tests/benchs/export/ +tests/benchs/dump/ diff --git a/tests/benchs/build.hxml b/tests/benchs/build.hxml index b371c163b60..897d4be9585 100644 --- a/tests/benchs/build.hxml +++ b/tests/benchs/build.hxml @@ -1,3 +1,3 @@ -cp src -main Main --D test=Calls \ No newline at end of file +-D test=Access \ No newline at end of file diff --git a/tests/benchs/src/cases/Access.hx b/tests/benchs/src/cases/Access.hx new file mode 100644 index 00000000000..57930e12c48 --- /dev/null +++ b/tests/benchs/src/cases/Access.hx @@ -0,0 +1,101 @@ +package cases; + +import hxbenchmark.Suite; + +typedef Def = { + var i : Int; + var f : Float; + @:optional var oi : Int; + @:optional var of : Float; + var ai : Array; + var af : Array; + var str : String; +} +typedef Obj = {>Def, + var sub : Def; +} + +class Access extends TestCase { + @:analyzer(ignore) + function measureReal() { + var o = getObj(); + var suite = new Suite("real"); + suite.add(".Int", o.i); + suite.add(".Float", o.f); + suite.add("Int[]", o.ai[0]); + suite.add("Float[]", o.af[0]); + suite.add(".Int?", o.oi); + suite.add(".Float?", o.of); + suite.add(".String.length", o.str.length); + suite.add(".sub.Int", o.sub.i); + suite.add(".sub.Float", o.sub.f); + suite.add(".sub.Int[]", o.sub.ai[0]); + suite.add(".sub.Float[]", o.sub.af[0]); + suite.add(".sub.Int?", o.sub.oi); + suite.add(".sub.Float?", o.sub.of); + suite.add(".sub.String.length", o.sub.str.length); + return suite.run(); + } + + @:analyzer(ignore) + function measureJson() { + var o:Obj = haxe.Json.parse(haxe.Json.stringify(getObj())); + var suite = new Suite("json"); + suite.add(".Int", o.i); + suite.add(".Float", o.f); + suite.add("Int[]", o.ai[0]); + suite.add("Float[]", o.af[0]); + suite.add(".Int?", o.oi); + suite.add(".Float?", o.of); + suite.add(".String.length", o.str.length); + suite.add(".sub.Int", o.sub.i); + suite.add(".sub.Float", o.sub.f); + suite.add(".sub.Int[]", o.sub.ai[0]); + suite.add(".sub.Float[]", o.sub.af[0]); + suite.add(".sub.Int?", o.sub.oi); + suite.add(".sub.Float?", o.sub.of); + suite.add(".sub.String.length", o.sub.str.length); + return suite.run(); + } + + function measureDynamic() { + var o:Dynamic = getObj(); + var suite = new Suite("dynamic"); + suite.add(".Int", o.i); + suite.add(".Float", o.f); + suite.add("Int[]", o.ai[0]); + suite.add("Float[]", o.af[0]); + suite.add(".Int?", o.oi); + suite.add(".Float?", o.of); + suite.add(".String.length", o.str.length); + suite.add(".sub.Int", o.sub.i); + suite.add(".sub.Float", o.sub.f); + suite.add(".sub.Int[]", o.sub.ai[0]); + suite.add(".sub.Float[]", o.sub.af[0]); + suite.add(".sub.Int?", o.sub.oi); + suite.add(".sub.Float?", o.sub.of); + suite.add(".sub.String.length", o.sub.str.length); + return suite.run(); + } + + static function getObj():Obj { + return { + i : 1, + f : 1.0, + oi : 1, + of : 1.0, + ai : [1], + af : [1.0], + str : "1", + sub : { + i : 1, + f : 1.0, + oi : 1, + of : 1.0, + ai : [1], + af : [1.0], + str : "1", + } + }; + } +} \ No newline at end of file diff --git a/tests/benchs/src/hxbenchmark/ResultPrinter.hx b/tests/benchs/src/hxbenchmark/ResultPrinter.hx index 839b49d3558..c6f40a43139 100644 --- a/tests/benchs/src/hxbenchmark/ResultPrinter.hx +++ b/tests/benchs/src/hxbenchmark/ResultPrinter.hx @@ -21,7 +21,6 @@ class ResultPrinter { } } var best = result.cases[0].numSamples; - trace(best); var buf = new StringBuf(); buf.add(" Suite: " + result.name + "\n"); for (caseResult in result.cases) {