-
Notifications
You must be signed in to change notification settings - Fork 8.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Performance] vtebench tracking issue #10563
Comments
The result on my PC (WSL 2, AA: grayscale, font: Hack 13pt, Acrylic: off): 1.8.1521.0
1.9.1445.0
1.10.1933.0
Clearly there's something wrong with scrolling that we need to find out. zadjii notes circa 1.19 terminal canary 1.20.2683.0
conhost, 1.19.2682
|
For reference this is how Alacritty looks like (private release build, because it requires a fix that has not yet released); Alacritty on Windows (19043.1083)
Here's some result on several Linux terminals (Ryzen 3600X, X11): GNOME Terminal 3.36.2
Tilix 1.9.1
Alacritty 0.8.0
More results on macOS (this is on a 2015 MBP 13, so I use a smaller window size to compensate the less powerful CPU): iTerm2 3.4.8
Terminal.app 2.10
Alacritty 0.8.0
|
To summarize the work:
|
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request <!-- Other than the issue solved, is this relevant to any other issues/existing PRs? --> ## References <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist * [X] Supports #10563 * [ ] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/Terminal) and sign the CLA * [ ] Tests added/passed * [ ] Documentation updated. If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/terminal) and link it here: #xxx * [ ] Schema updated. * [ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx <!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed
I think I am gonna step down from this project temporarily. So feel free to edit this issue however that may be helpful. The performance regression in 1.10 is definitely worth investigating. But sadly I don’t have the energy to do that anymore (also my VS just stopped working). What happened in the last month exhausted me more than I could imagine. I need a break from it. Feel free to At me if there’s some shitty code I wrote that causes troubles. I hope there isn’t too many of them :) |
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request <!-- Other than the issue solved, is this relevant to any other issues/existing PRs? --> ## References The `+=` operator is an extremely hot path under heavily output load. This PR aims to optimize its speed. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist * [ ] Supports #10563 * [ ] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/Terminal) and sign the CLA * [ ] Tests added/passed * [ ] Documentation updated. If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/terminal) and link it here: #xxx * [ ] Schema updated. * [ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx <!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed
…10921) Improve WriteCharsLegacy performance by increasing LocalBuffer size, allowing longer runs of characters to be submitted to the remaining parts of conhost. References #10563 -- vtebench tracking issue ## Validation Steps Performed * Ran `cat big.txt`, vtebench and termbench and noted ~5% performance improvements
This commit improves the renderer classes by: * reducing binary size by 4kB * improving performance by 5% * reducing code complexity ## References * #10563 -- vtebench tracking issue ## PR Checklist * [x] I work here * [x] Tests added/passed ## Validation Steps Performed * Ran vtebench/termbench and noted ~5% perf. improvements
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? --> ## Summary of the Pull Request <!-- Other than the issue solved, is this relevant to any other issues/existing PRs? --> ## References The `+=` operator is an extremely hot path under heavily output load. This PR aims to optimize its speed. <!-- Please review the items on the PR checklist before submitting--> ## PR Checklist * [ ] Supports #10563 * [ ] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/Terminal) and sign the CLA * [ ] Tests added/passed * [ ] Documentation updated. If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/terminal) and link it here: #xxx * [ ] Schema updated. * [ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx <!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here --> ## Detailed Description of the Pull Request / Additional comments <!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well --> ## Validation Steps Performed
…10921) Improve WriteCharsLegacy performance by increasing LocalBuffer size, allowing longer runs of characters to be submitted to the remaining parts of conhost. References #10563 -- vtebench tracking issue ## Validation Steps Performed * Ran `cat big.txt`, vtebench and termbench and noted ~5% performance improvements
`TextAttribute` and `TextColor` are commonly used structures in hot paths. This commit replaces more complex comparisons where each field is compared independently with a single call to `memcmp`. This compiles down to just a few instructions. This reduces code and binary size and improves performance for paths were `TextAttribute`s need to be compared. ## PR Checklist * [x] Supports #10563 * [x] CLA signed. If not, go over [here](https://cla.opensource.microsoft.com/microsoft/Terminal) and sign the CLA * [x] Tests added/passed * [ ] Documentation updated. If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/terminal) and link it here: #xxx * [ ] Schema updated. * [ ] I've discussed this with core contributors already. If not checked, I'm ready to accept this work might be rejected in favor of a different grand plan. Issue number where discussion took place: #xxx ## Validation Steps Performed * termbench still works ✔️ Co-authored-by: Leonard Hecker <[email protected]>
This is an attempt to use vtebench by alacritty to measure & establish the performance baseline of Windows Terminal.
The program itself requires
bash
so we can only test it through WSL and SSH. Still it shows the real-life performance of this product.The text was updated successfully, but these errors were encountered: