From 8da9ed942d3a9ebc1c67cb7d43f9e21640865fbb Mon Sep 17 00:00:00 2001 From: lunarcleint Date: Thu, 22 Aug 2024 14:43:10 -0700 Subject: [PATCH] benchmark stuff Co-authored-by: Ne_Eo --- tests/mac.hxml | 4 ++-- tests/src/Main.hx | 32 ++++++++++++++++++++++++++++++-- tests/src/benchmark/Benchmark.hx | 3 +++ 3 files changed, 35 insertions(+), 4 deletions(-) diff --git a/tests/mac.hxml b/tests/mac.hxml index 3ec74d6..73512cf 100644 --- a/tests/mac.hxml +++ b/tests/mac.hxml @@ -27,8 +27,8 @@ # Copying the assets from source code to bin folder ---cmd rm -rf bin/cpp/assets ---cmd cp -r assets bin/cpp/assets +# --cmd rm -rf bin/cpp/assets +# --cmd cp -r assets bin/cpp/assets --cpp bin/cpp --cmd cd bin/cpp --cmd ./Main \ No newline at end of file diff --git a/tests/src/Main.hx b/tests/src/Main.hx index c665d31..c9435e0 100644 --- a/tests/src/Main.hx +++ b/tests/src/Main.hx @@ -10,9 +10,37 @@ class Main { static function main() { #if BENCHMARK Sys.println("Running benchmark"); - + //new Benchmark("Test", 1000); - new TestBenchmark(); + var haxeTotalTime:Float = 0; + var hscriptTotalTime:Float = 0; + + var haxeTimes:Array = []; + var hscriptTimes:Array = []; + + var iterations:Int = 10; + for (i in 0...iterations) { + var benchmark:TestBenchmark = new TestBenchmark(); + + haxeTimes.push(benchmark.haxeTotalTime); + hscriptTimes.push(benchmark.hscriptTotalTime); + + haxeTotalTime += benchmark.haxeTotalTime; + hscriptTotalTime += benchmark.hscriptTotalTime; + } + + haxeTimes.sort((a, b) -> return a > b ? 1 : -1); + hscriptTimes.sort((a, b) -> return a > b ? 1 : -1); + + var slowestHaxeTime:Float = haxeTimes[haxeTimes.length-1]; + var slowestHscriptTime:Float = hscriptTimes[hscriptTimes.length-1]; + var fastestHaxeTime:Float = haxeTimes[0]; + var fastestHscriptTime:Float = hscriptTimes[0]; + + var haxeWon = hscriptTotalTime > haxeTotalTime; + Sys.println('${haxeWon ? "Haxe" : "Hscript"} was faster overall (Faster by: ${Util.roundWith((haxeWon ? hscriptTotalTime/haxeTotalTime : haxeTotalTime/hscriptTotalTime), 100)}x)'); + Sys.println('Haxe average time: ${Util.convertToReadableTime(haxeTotalTime/iterations)} (Highest: ${Util.convertToReadableTime(slowestHaxeTime)}) (Lowest: ${Util.convertToReadableTime(fastestHaxeTime)})'); + Sys.println('Hscript average time: ${Util.convertToReadableTime(hscriptTotalTime/iterations)} (Highest: ${Util.convertToReadableTime(slowestHscriptTime)}) (Lowest: ${Util.convertToReadableTime(fastestHscriptTime)})'); #else Sys.println("Beginning tests"); if(!Main.SHOW_KNOWN_BUGS) { diff --git a/tests/src/benchmark/Benchmark.hx b/tests/src/benchmark/Benchmark.hx index 77ac4e3..05f45d9 100644 --- a/tests/src/benchmark/Benchmark.hx +++ b/tests/src/benchmark/Benchmark.hx @@ -11,7 +11,10 @@ class Benchmark extends HScriptRunner { public function new(name:String, iterations:Int) { super(); + doBenchmark(name, iterations); + } + public function doBenchmark(name:String, iterations:Int) { haxeTimes = cast new haxe.ds.Vector(iterations); hscriptTimes = cast new haxe.ds.Vector(iterations);