DEV Community

Brian
Brian

Posted on • Edited on

Level up your terminal game

A co-worker posted a link about alacritty in our company slack channel. Alacritty is a gpu-based terminal rendering console application written in Rust. I'm on a mac on my desktop, so I had to fumble around with Rust to get it going, thanks to homebrew it was pretty easy.

I was pretty floored to find out just how amazing it's performance is. I've used iTerm since I switched to Mac in 2009ish and have a lot of my workflow integrated with iTerm. What I really wasn't prepared for was just how much more I should be expecting out of a terminal application.

I ran some basic tests using rg that I knew would pour output to the terminal. My test was I was in my projects directory and simply searched for 'perl'. It returns an mixed bag of ascii and binary text, 176002 lines to be exact.

So I timed each output in my terminal. This is NOT the best method for a test, I understand that. However, the results were striking regardless:

  • alacritty: rg perl 7.28s user 28.04s system 21% cpu 2:43.80 total
  • iTerm: rg perl 7.15s user 26.87s system 0% cpu 58:14.69 total
  • kitty: rg perl 6.26s user 19.47s system 11% cpu 3:35.96 total
  • hyper: rg perl 6.65s user 16.02s system 25% cpu 1:27.68 total

alacritty was astounding at how fast it scrolled data, and scrollback was as fast as I could scroll my mouse wheel.

iterm2 was exactly how I expected it to be, fine.

kitty felt just like alactritty, but feels like a much more mature project.

hyper was the terminal I thought I was going to move to, because I enjoyed the configurability of it, and wingdings it adds, however, it performed only marginally better than iterm2. My test result unfortunately didn't support my feeling, hyper's 'time' result came back worse than iTerm2, but it definitely finished faster.

So, the differences were intense, and mindblowing. It took Alacritty about 3 minutes to send everything. Iterm2 took nearly an hour. Kitty was about a minute longer than Alacritty. However, it was clear, alacritty/kitty/gpu-based terminal emulators provided unbelievable performance.

For me, Kitty is a great choice. It feels a little more mature, and was available via homebrew (brew install kitty), and works great on my Antergos linux destktop. Scrolling in vim, and tmux scrollback is silky smooth, and the fonts (once you work it out) is amazing. I use powerline9k and prezto, and kitty handles my prompt no problem.

Kitty/Alacritty requires manual configuration files, and getting your fonts right can be a challenge. If you're on a mac, you can save yourself a shitload of time with this command fc-list : family | rg -i powerline That will give you the font to put in the config.

If you have a better way to test terminal performance I'd love to try it.

Top comments (2)

Collapse
 
laggardkernel profile image
laggardkernel • Edited

The post may be outdated cause iTerm2 supports GPU rendering now. Check Metal Renderer for iTerm2. The only problem of iTerm2 for me is that the performance drops within tmux with or without metal renderer enabled. So I switched to kitty.

I now use zsh-plug and a custom command line.

BTW, if the "zsh-plug" means zplug, I recommend you switching to another zsh plugin manger. From my test, zplug is the slowest. Its parallel implementation costs too much time to be sourced, and the loading time cost on each plugin is also higher than others by calculating the average time on each plugin.

Comparison of ZSH frameworks and plugin managers

Collapse
 
bdmorin profile image
Brian

I use powerline9k and prezto, and kitty handles my prompt no problem.

I now use zsh-plug and a custom command line.