This commit is contained in:
HEIHUAa
2026-04-09 20:13:33 +08:00
+63
View File
@@ -0,0 +1,63 @@
import haxe.Timer;
import hscript.Interp;
import hscript.Parser;
class PerfTest {
static function main() {
var parser = new Parser();
parser.allowTypes = true;
var testScript = "
var sum = 0;
var a = 1;
var b = 2;
var c = 3;
for (i in 0...10000) {
sum = sum + a * b + c - a / b;
a = a + 1;
b = b + 1;
c = c + 1;
if (sum > 1000000) sum = 0;
if (a > 100) a = 1;
if (b > 200) b = 2;
if (c > 300) c = 3;
}
sum;
";
var program = parser.parseString(testScript);
var interp = new Interp();
interp.variables.set("Math", Math);
var iterations = 100;
Sys.println("=== Fast Binops (switch) Mode ===");
var totalTests = 5;
var times:Array<Float> = [];
for (testNum in 0...totalTests) {
var interp = new Interp();
interp.variables.set("Math", Math);
var startTime = Timer.stamp();
for (i in 0...iterations) {
interp.execute(program);
}
var endTime = Timer.stamp();
var elapsed = endTime - startTime;
times.push(elapsed);
Sys.println('Test ${testNum + 1}: ${Std.string(elapsed * 1000).substr(0, 8)} ms');
}
var avg = Lambda.fold(times, function(a, b) return a + b, 0.0) / times.length;
var minTime = Lambda.fold(times, function(a, b) return a < b ? a : b, times[0]);
var maxTime = Lambda.fold(times, function(a, b) return a > b ? a : b, times[0]);
Sys.println("");
Sys.println('Average: ${Std.string(avg * 1000).substr(0, 8)} ms');
Sys.println('Min: ${Std.string(minTime * 1000).substr(0, 8)} ms');
Sys.println('Max: ${Std.string(maxTime * 1000).substr(0, 8)} ms');
}
}