Skip to content

Commit de3e31f

Browse files
slabtop: reduce CPU usage
1 parent f072684 commit de3e31f

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

src/uu/slabtop/src/slabtop.rs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,13 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
7474
}
7575

7676
let mut terminal = ratatui::init();
77+
// Initial output
78+
terminal.draw(|frame| {
79+
Tui::new(&slabinfo.read()).render(frame.area(), frame.buffer_mut());
80+
})?;
81+
7782
loop {
78-
if let Ok(true) = event::poll(Duration::from_millis(10)) {
83+
if let Ok(true) = event::poll(Duration::from_millis(20)) {
7984
// If event available, break this loop
8085
if let Ok(e) = event::read() {
8186
match e {
@@ -91,23 +96,22 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
9196
uucore::error::set_exit_code(0);
9297
break;
9398
}
94-
event::Event::Key(KeyEvent {
95-
code: KeyCode::Char(' '),
96-
..
97-
}) => should_update.store(true, Ordering::Relaxed),
99+
event::Event::Resize(_, _) => should_update.store(true, Ordering::Relaxed),
98100
_ => {}
99101
}
100102
}
101103
}
102104

103-
terminal.draw(|frame| {
104-
Tui::new(&slabinfo.read()).render(frame.area(), frame.buffer_mut());
105-
})?;
105+
if should_update.load(Ordering::Relaxed) {
106+
terminal.draw(|frame| {
107+
Tui::new(&slabinfo.read()).render(frame.area(), frame.buffer_mut());
108+
})?;
109+
}
106110

107111
if settings.once {
108112
break;
109113
} else {
110-
sleep(Duration::from_millis(10));
114+
sleep(Duration::from_millis(20));
111115
}
112116
}
113117

0 commit comments

Comments
 (0)