Skip to content

Commit 8e7b35c

Browse files
authored
Merge pull request #206 from jasonrhansen/stdout-bufwriter
Use BufWriter when STDOUT is not a TTY
2 parents a694f88 + ea4d0c5 commit 8e7b35c

17 files changed

+71
-34
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010

1111
### Changed
1212
- Decreased default minimum width from 0.1% to 0.01%. [#204](https://github.com/jonhoo/inferno/pull/204)
13+
- Detect if STDOUT is a TTY and if it's not, use a `BufWriter` to avoid line buffering. [#206](https://github.com/jonhoo/inferno/pull/206)
1314

1415
### Removed
1516

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ nameattr = ["indexmap"]
2828

2929
[dependencies]
3030
ahash = "0.6"
31+
atty = "0.2"
3132
crossbeam-utils = { version = "0.8", optional = true }
3233
crossbeam-channel = { version = "0.5", optional = true }
3334
dashmap = { version = "3", optional = true }

src/bin/collapse-dtrace.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,5 +83,5 @@ fn main() -> io::Result<()> {
8383
}
8484

8585
let (infile, options) = opt.into_parts();
86-
Folder::from(options).collapse_file(infile.as_ref(), io::stdout().lock())
86+
Folder::from(options).collapse_file_to_stdout(infile.as_ref())
8787
}

src/bin/collapse-guess.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,5 @@ fn main() -> io::Result<()> {
7575
}
7676

7777
let (infile, options) = opt.into_parts();
78-
Folder::from(options).collapse_file(infile.as_ref(), io::stdout().lock())
78+
Folder::from(options).collapse_file_to_stdout(infile.as_ref())
7979
}

src/bin/collapse-perf.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,5 +112,5 @@ fn main() -> io::Result<()> {
112112
}
113113

114114
let (infile, options) = opt.into_parts();
115-
Folder::from(options).collapse_file(infile.as_ref(), io::stdout().lock())
115+
Folder::from(options).collapse_file_to_stdout(infile.as_ref())
116116
}

src/bin/collapse-sample.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,5 +62,5 @@ fn main() -> io::Result<()> {
6262
}
6363

6464
let (infile, options) = opt.into_parts();
65-
Folder::from(options).collapse_file(infile.as_ref(), io::stdout().lock())
65+
Folder::from(options).collapse_file_to_stdout(infile.as_ref())
6666
}

src/bin/collapse-vtune.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,5 +64,5 @@ fn main() -> io::Result<()> {
6464
}
6565

6666
let (infile, options) = opt.into_parts();
67-
Folder::from(options).collapse_file(infile.as_ref(), io::stdout().lock())
67+
Folder::from(options).collapse_file_to_stdout(infile.as_ref())
6868
}

src/bin/diff-folded.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,15 @@ fn main() -> io::Result<()> {
8787
}
8888

8989
let (folded1, folded2, options) = opt.into_parts();
90-
differential::from_files(options, folded1, folded2, io::stdout().lock())
90+
91+
if atty::is(atty::Stream::Stdout) {
92+
differential::from_files(options, folded1, folded2, io::stdout().lock())
93+
} else {
94+
differential::from_files(
95+
options,
96+
folded1,
97+
folded2,
98+
io::BufWriter::new(io::stdout().lock()),
99+
)
100+
}
91101
}

src/bin/flamegraph.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,9 +297,19 @@ fn main() -> quick_xml::Result<()> {
297297
};
298298

299299
let (infiles, mut options) = opt.into_parts();
300+
300301
options.palette_map = palette_map.as_mut();
301302

302-
flamegraph::from_files(&mut options, &infiles, io::stdout().lock())?;
303+
if atty::is(atty::Stream::Stdout) {
304+
flamegraph::from_files(&mut options, &infiles, io::stdout().lock())?;
305+
} else {
306+
flamegraph::from_files(
307+
&mut options,
308+
&infiles,
309+
io::BufWriter::new(io::stdout().lock()),
310+
)?;
311+
}
312+
303313
save_consistent_palette_if_needed(&palette_map, PALETTE_MAP_FILE).map_err(quick_xml::Error::Io)
304314
}
305315

src/collapse/common.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,7 @@ impl Occurrences {
465465
}
466466
}
467467
}
468+
writer.flush()?;
468469
Ok(())
469470
}
470471
}
@@ -510,7 +511,7 @@ pub(crate) fn fix_partially_demangled_rust_symbol(symbol: &str) -> Cow<str> {
510511
demangled.push_str("::");
511512
rest = &rest[2..];
512513
} else {
513-
demangled.push_str(".");
514+
demangled.push('.');
514515
rest = &rest[1..];
515516
}
516517
} else if rest.starts_with('$') {

0 commit comments

Comments
 (0)