Windows Terminal seems 30x times slower than mintty/wsltty #8215

Closed
opened 2026-01-31 01:23:43 +00:00 by claunia · 5 comments
Owner

Originally created by @skywind3000 on GitHub (May 18, 2020).

Environment

Windows: 
Platform ServicePack Version      VersionString
-------- ----------- -------      -------------
 Win32NT             10.0.18363.0 Microsoft Windows NT 10.0.18363.0

WSL: Debian10

Steps to reproduce

  1. start wsl in Windows Terminal
  2. run: time for i in {1..5000}; do echo "line $i"; done
  3. start wsl in wsltty.
  4. run: time for i in {1..5000}; do echo "line $i"; done
  5. compare the real time result.

Expected behavior

According to the roadmap:

图片

Terminal shall be fast and efficient. Input latency should be eliminated wherever possible. Terminal will be very memory-efficient, and will avoid utilizing unnecessary dependencies to minimize memory consumption and disk footprint

Performance is supposed to be in the first place in the roadmap. And Windows Terminal should, at least, not be slower many times than mintty/wsltty before 1.0 release.

Actual behavior

  • Windows Terminal:
$ time for i in {1..5000}; do echo "line $i"; done
line 1
line 2 
line 3
...
line 5000

real    0m0.935s
user    0m0.047s
sys     0m0.125s 

screenshot:

图片

It requires almost one second to output 5000 lines.

  • wsltty:
$ time for i in {1..5000}; do echo "line $i"; done
line 1
line 2 
line 3
...
line 5000

real    0m0.034s
user    0m0.016s
sys     0m0.016s

screenshot:

图片

wsltty uses mintty as the backend, which requires only 0.034s to output 5000 lines.

Conclusion

Windows Terminal may have the lowest responsive time, but the throughput is really poor, almost 30x times slower than mintty/wsltty.

Originally created by @skywind3000 on GitHub (May 18, 2020). <!-- 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING: 1. If I delete this entire template and go my own path, the core team may close my issue without further explanation or engagement. 2. If I list multiple bugs/concerns in this one issue, the core team may close my issue without further explanation or engagement. 3. If I write an issue that has many duplicates, the core team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number). 4. If I leave the title incomplete when filing the issue, the core team may close my issue without further explanation or engagement. 5. If I file something completely blank in the body, the core team may close my issue without further explanation or engagement. All good? Then proceed! --> <!-- This bug tracker is monitored by Windows Terminal development team and other technical folks. **Important: When reporting BSODs or security issues, DO NOT attach memory dumps, logs, or traces to Github issues**. Instead, send dumps/traces to secure@microsoft.com, referencing this GitHub issue. If this is an application crash, please also provide a Feedback Hub submission link so we can find your diagnostic data on the backend. Use the category "Apps > Windows Terminal (Preview)" and choose "Share My Feedback" after submission to get the link. Please use this form and describe your issue, concisely but precisely, with as much detail as possible. --> # Environment ```none Windows: Platform ServicePack Version VersionString -------- ----------- ------- ------------- Win32NT 10.0.18363.0 Microsoft Windows NT 10.0.18363.0 WSL: Debian10 ``` # Steps to reproduce <!-- A description of how to trigger this bug. --> 1. start wsl in Windows Terminal 2. run: `time for i in {1..5000}; do echo "line $i"; done` 3. start wsl in [wsltty](https://github.com/mintty/wsltty). 4. run: `time for i in {1..5000}; do echo "line $i"; done` 5. compare the `real time` result. # Expected behavior According to the roadmap: ![图片](https://user-images.githubusercontent.com/3035071/82188487-8655e200-9920-11ea-9aa7-0590a3a6c1ff.png) > Terminal shall be fast and efficient. Input latency should be eliminated wherever possible. Terminal will be very memory-efficient, and will avoid utilizing unnecessary dependencies to minimize memory consumption and disk footprint Performance is supposed to be in the first place in the roadmap. And Windows Terminal should, at least, not be slower many times than mintty/wsltty before 1.0 release. <!-- A description of what you're expecting, possibly containing screenshots or reference material. --> # Actual behavior <!-- What's actually happening? --> - Windows Terminal: ```bash $ time for i in {1..5000}; do echo "line $i"; done line 1 line 2 line 3 ... line 5000 real 0m0.935s user 0m0.047s sys 0m0.125s ``` screenshot: ![图片](https://user-images.githubusercontent.com/3035071/82187601-3a566d80-991f-11ea-91df-6d43648163a9.png) It requires almost one second to output 5000 lines. - wsltty: ```bash $ time for i in {1..5000}; do echo "line $i"; done line 1 line 2 line 3 ... line 5000 real 0m0.034s user 0m0.016s sys 0m0.016s ``` screenshot: ![图片](https://user-images.githubusercontent.com/3035071/82187616-417d7b80-991f-11ea-9fe5-e78bcb64f947.png) wsltty uses mintty as the backend, which requires only 0.034s to output 5000 lines. # Conclusion Windows Terminal may have the lowest responsive time, but the throughput is really poor, almost 30x times slower than mintty/wsltty.
claunia added the Product-ConhostResolution-DuplicateArea-Performance labels 2026-01-31 01:23:43 +00:00
Author
Owner

@zadjii-msft commented on GitHub (May 18, 2020):

So, the more useful comparison might be Windows Terminal vs the vintage console host, where the Terminal is nearly 7x faster:
image

This might be part of a discussion @miniksa and I were having....

@zadjii-msft commented on GitHub (May 18, 2020): So, the more useful comparison might be Windows Terminal vs the vintage console host, where the Terminal is nearly 7x _faster_: ![image](https://user-images.githubusercontent.com/18356694/82233960-5c87c580-98f6-11ea-83dc-455da152297b.png) This might be part of a discussion @miniksa and I were having....
Author
Owner

@miniksa commented on GitHub (May 18, 2020):

This might be part of a discussion @miniksa and I were having....

Yes, it's probably the overhead of the console driver and/or we need to do wait chain analysis on it.

Our goal for 1.0 was to be faster than the original conhost while using the Windows Console driver. I'm not surprised that using a customized PuTTY talking directly to the TTY streams from the *nix environment is faster given it doesn't use any of the console system.

Long term, we want to get parity with this.

@miniksa commented on GitHub (May 18, 2020): > This might be part of a discussion @miniksa and I were having.... Yes, it's probably the overhead of the console driver and/or we need to do wait chain analysis on it. Our goal for 1.0 was to be faster than the original conhost while using the Windows Console driver. I'm not surprised that using a customized PuTTY talking directly to the TTY streams from the *nix environment is faster given it doesn't use any of the console system. Long term, we want to get parity with this.
Author
Owner

@kasper93 commented on GitHub (May 18, 2020):

For me WT is actually slower, 9s vs 5s on con. Anyway I think this is dup of https://github.com/microsoft/terminal/issues/4129

@kasper93 commented on GitHub (May 18, 2020): For me WT is actually slower, 9s vs 5s on con. Anyway I think this is dup of https://github.com/microsoft/terminal/issues/4129
Author
Owner

@miniksa commented on GitHub (May 18, 2020):

/dup #3075

@miniksa commented on GitHub (May 18, 2020): /dup #3075
Author
Owner

@ghost commented on GitHub (May 18, 2020):

Hi! We've identified this issue as a duplicate of another one that already exists on this Issue Tracker. This specific instance is being closed in favor of tracking the concern over on the referenced thread. Thanks for your report!

@ghost commented on GitHub (May 18, 2020): Hi! We've identified this issue as a duplicate of another one that already exists on this Issue Tracker. This specific instance is being closed in favor of tracking the concern over on the referenced thread. Thanks for your report!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#8215