terminal: Rendering performance of chafa is very slow
sudo apt install chafa curl https://media.giphy.com/media/12UwsVgQCYL3H2/giphy.gif --output winanim.gif chafa winanim.gif --font-ratio 1/3
Edit: On Ubuntu 18.04, follow directions here to get chafa sources and build 'em: https://hpjansson.org/chafa/
Edit2: after doing a ./configure
and sudo apt install
loop as you realize stuff is missing, you’ll get all the way through and it will whine about not being able to find the lib. Do ldconfig
and it will shut up.
Edit3:
ubuntu
cd ~
mkdir chafa
cd chafa
curl https://hpjansson.org/chafa/releases/chafa-1.4.0.tar.xz --output chafa.tar.xz
tar xf chafa.tar.xz chafa-1.4.0/
cd chafa-1.4.0/
sudo apt install gcc pkg-config libgtk2.0-dev libmagickwand-dev
sudo ldconfig
./configure
make
sudo make install
About this issue
- Original URL
- State: closed
- Created 5 years ago
- Reactions: 4
- Comments: 23 (15 by maintainers)
Commits related to this issue
- win, tty: improve SIGWINCH performance Continuing improvement of SIGWINCH from PR #2308. Running SetWinEventHook without filtering for the specific PIDs has significant impact on the performance of ... — committed to JaneaSystems/libuv by bzoz 5 years ago
- win, tty: improve SIGWINCH performance Continuing improvement of SIGWINCH from PR #2308. Running SetWinEventHook without filtering for the specific PIDs has significant impact on the performance of ... — committed to JaneaSystems/libuv by bzoz 5 years ago
- win, tty: improve SIGWINCH performance Continuing improvement of SIGWINCH from PR #2308. Running SetWinEventHook without filtering for the specific PIDs has significant impact on the performance of ... — committed to libuv/libuv by bzoz 5 years ago
- Introduce til::rle - a run length encoded vector * #8000 - Supports buffer rewrite work. A re-use of `til::rle` will be useful as a column counter as we pursue NxM storage and presentation. * #3075... — committed to microsoft/terminal by lhecker 3 years ago
- Introduce til::rle - a run length encoded vector ## Summary of the Pull Request Introduces `til::rle`, a vector-like container which stores elements of type T in a run length encoded format. This al... — committed to microsoft/terminal by lhecker 3 years ago
- Introduce til::rle - a run length encoded vector ## Summary of the Pull Request Introduces `til::rle`, a vector-like container which stores elements of type T in a run length encoded format. This al... — committed to microsoft/terminal by lhecker 3 years ago
- Introduce til::rle - a run length encoded vector ## Summary of the Pull Request Introduces `til::rle`, a vector-like container which stores elements of type T in a run length encoded format. This al... — committed to microsoft/terminal by lhecker 3 years ago
- Squashed commit of the following: commit 4b0eeef949b62d5c431eaf5d1374302b1362b6fe Author: Leonard Hecker <lhecker@microsoft.com> Date: Fri May 14 23:56:08 2021 +0200 Introduce til::rle - a run... — committed to microsoft/terminal by DHowett 3 years ago
- Introduce til::rle - a run length encoded vector (#10099) ## Summary of the Pull Request Introduces `til::rle`, a vector-like container which stores elements of type T in a run length encoded for... — committed to microsoft/terminal by lhecker 3 years ago
The major time spent on the WinEvent turns out to be only if Node.js is running on your system.
If Node.js is running, it registers for the WinEvent notifications for EVENT_CONSOLE_LAYOUT to know when the window size has changed. Given WinEvents require kernel work to broadcast and tend to be registered globally, this causes a system-wide slowdown of all of your consoles when it is listening here.
https://github.com/nodejs/node/blob/0109e121d3a2f87c4bad75ac05436b56c9fd3407/deps/uv/src/win/tty.c line 2294
If you kill all node.js runtimes (including the one that Visual Studio 2017 launches), that performance drag goes away.
I need to:
WPR analysis:
For conhost.exe…
On the I/O thread, hot areas include:
On the render thread, hot areas include:
I didn’t do a wait chain analysis yet to see if the locking/threading was slowing things down because at this point, we have a few areas with obvious routes to improvement that might alleviate the whole deal:
Therefore, my conclusion is:
And I have now filed MSFT:21167256 to do these things at some point and hopefully we’ll have fixed the performance issue.
Also @oising let’s leave this here: https://github.com/hzeller/timg/
The first quick fix for this (GDI measurement caching) just went out with insider build 18932!