From e1c5422f024af126b1577ac49d859ee0af1af2c4 Mon Sep 17 00:00:00 2001 From: Abul Date: Mon, 10 Aug 2026 18:12:56 +0530 Subject: [PATCH] measure base and head in parallel --- tools/perfrunner/source/app.d | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/perfrunner/source/app.d b/tools/perfrunner/source/app.d index ad75cd72f377..67376b23768b 100644 --- a/tools/perfrunner/source/app.d +++ b/tools/perfrunner/source/app.d @@ -2,6 +2,7 @@ module app; import std.file : mkdirRecurse, tempDir, write; import std.getopt : getopt; +import std.parallelism : task; import std.path : buildPath, dirName; import std.stdio : stderr, writeln; @@ -59,8 +60,11 @@ int main(string[] args) // Resolved once so both refs compile vibe.d with the same flags. auto vibedFlags = describeFlags(vibedDir, baseDmd); - auto base = measure(baseDmd, workload, basePhobos, vibedRoot, vibedFlags, tmp, "base"); + // measure base in a second thread while this one does head + auto baseTask = task!measure(baseDmd, workload, basePhobos, vibedRoot, vibedFlags, tmp, "base"); + baseTask.executeInNewThread(); auto head = measure(headDmd, workload, headPhobos, vibedRoot, vibedFlags, tmp, "head"); + auto base = baseTask.yieldForce; MetricResult[] metrics; foreach (def; initials)