Buffer profile output to amortize heavy cost of Blaze server-->client output.
PiperOrigin-RevId: 244066077
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProfileCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/ProfileCommand.java
index 3b49c1a..6a4e034 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/ProfileCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/ProfileCommand.java
@@ -222,7 +222,7 @@
opts.vfsStatsLimit = 0;
}
- try (PrintStream out = new PrintStream(env.getReporter().getOutErr().getOutputStream())) {
+ try (PrintStream out = getOutputStream(env)) {
env.getReporter()
.handle(
Event.warn(
@@ -339,6 +339,11 @@
return BlazeCommandResult.exitCode(ExitCode.SUCCESS);
}
+ private static PrintStream getOutputStream(CommandEnvironment env) {
+ return new PrintStream(
+ new BufferedOutputStream(env.getReporter().getOutErr().getOutputStream()), false);
+ }
+
/**
* Prints trees rooted at tasks with a description matching a pattern.
* @see Task#printTaskTree(PrintStream, long)