-
-
Notifications
You must be signed in to change notification settings - Fork 40.4k
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
Update to xealousbrown. #8215
Update to xealousbrown. #8215
Conversation
5-13ms Latency decrease, 4x scan rate improvement. (CUSTOM_MATRIX = lite) is a really great feature!
While I like to see people using custom matrix lite, you might get the bulk of the performance gains from another solution. Something like #8216, and setting the new define to 1. While this wont be the same as two noops, it will cut out a significant portion of the idle time without having to jump to custom code. |
Thanks for the feedback! There are actually two parts to this; adding the nops "uncaps" the speed, allowing it to reach 10khz+. However the slow part is still the scanning. The majority of the speedup is actually from get_cols(). I actually tested this over a year ago. The QMK way, though very modular, spends a lot of time setting rows and polling each column individually. It does quite a bit of lookup to achieve it. The TMK way you hardcode some arbitrary bitbash mask and it does it very quickly. I haven't tested it thoroughly on qmk recently, since I am just applying all my old hacks together. The net increase is from something like 1900 scanrate to 8000 scanrate. It's nice that QMK has moved a lot of the hacks i made into core code (for example, setting usb polling rate to 1ms, CUSTOM_MATRIX = lite, Debouncing are all core features now) |
My experience is that the code within get_cols wouldn't give you much more than a 10% increase. And if you were to produce something like a flame chart, most of the time is spent in the waits. The net increase is good, but my preference is using core code where possible. Any chance you could you provide the perf difference for just the |
Any easy way to generate such charts? I haven't tested all these speedups part by part recently so Ill try and document the speedups I did, I was going to write a blog post at some point anyway |
So my optimizations are three things:
First, overall performance compared to qmk matrix.c:
bit-bash means 2,3,4 use the "optimized" version. Next table shows the performance difference of each part inside the custom_matrix implementation:
"qmk" represents an almost copy paste from qmk's matrix.c back into custom_matrix_lite, with slight modifications. you can see that the last option (2548) roughly matches qmk's real matrix implementation (2590). But wait! There's more!
Anyway its good that I sat down and did the research. |
Thank you for your contribution! |
Co-Authored-By: James Young <[email protected]>
Co-Authored-By: James Young <[email protected]>
Thanks for looking at it! |
Thanks! As an aside, this board is a standard ANSI 60%, correct? |
Yep, there's something about storing my bindings in user's/key-maps right? |
* Update to xealousbrown. 5-13ms Latency decrease, 4x scan rate improvement. (CUSTOM_MATRIX = lite) is a really great feature! * Updated Readme.md, added an extra speedhack. * More optimizations * Update keyboards/handwired/xealousbrown/rules.mk * Update keyboards/handwired/xealousbrown/rules.mk
There is, but that wasn't what prompted the question. I maintain the default keymaps over on QMK Configurator, and every time I pass by this one in my updates there, I'm reminded that your QMK Configurator implementation isn't correct – a user would have to assign the keys like this to get the expected key assignments. I'd like to fix it, but the correct way to do that per QMK's conventions requires that I edit your As far as storing your bindings in |
@noroadsleft Thanks for that. Feel free to correct it for me (aren't all devs lazy?); otherwise, |
@alex-ong You posted while I was writing a response, but you've got it there. You just need that change to the qmk_firmware/keyboards/handwired/xealousbrown/xealousbrown.h Lines 6 to 12 in ccc8338
in the same way, so the keycodes that move are still assigned to the same arguments in the layout macro (Backspace as K4C, Backslash as K3C, etc.). |
Alright i'll give it a shot tomorrow night, using GH60 layout as a guide to make sure those arrows in that diagram are right and i'm not missing any KC_NO's. Then will PR for someone to check and tell me i did it wrong lmao. |
* upstream: (1037 commits) [Keyboard] Add wasdat code controller (qmk#8858) fix sample code indent in feature_encoders.md (qmk#8883) [Keymap] Clean up my ergo keymaps and userspace (qmk#8857) idb 60 Bugfixes / Preparations for Open Source Hardware (qmk#8866) Rebound: add rev2 and thus rev1 as well (qmk#8630) Update vitamins included default keymap, enable NKRO, rev2 rgbsplit (qmk#8871) Update to xealousbrown. (qmk#8215) [Keyboard] DMQ Design SPIN (qmk#8820) Wheatfield Blocked65: Update RGBLED num (qmk#8725) Add VIA support to ID80 (qmk#8791) CFTKB Mysterium & Discipad VIA support (qmk#8794) Clean up ATSAM ifdefs (qmk#8808) [Docs] Japanese translation of docs/feature_encoders.md (qmk#8843) Add naked60 layout, clean up my userspace files and rules.mk. (qmk#8848) Fixing DecadePad Numlock LED Bug (qmk#8831) [Docs] Japanese translation of docs/feature_command.md (qmk#8672) Add support for YMD75 rev 2 (qmk#8853) Remove no-longer-necessary LTO checks from keyboards' config.h files (qmk#8773) Fix ta-65 tsangan layouts (qmk#8855) Fix Plain60 layout (qmk#8854) ...
* Update to xealousbrown. 5-13ms Latency decrease, 4x scan rate improvement. (CUSTOM_MATRIX = lite) is a really great feature! * Updated Readme.md, added an extra speedhack. * More optimizations * Update keyboards/handwired/xealousbrown/rules.mk * Update keyboards/handwired/xealousbrown/rules.mk
* Update to xealousbrown. 5-13ms Latency decrease, 4x scan rate improvement. (CUSTOM_MATRIX = lite) is a really great feature! * Updated Readme.md, added an extra speedhack. * More optimizations * Update keyboards/handwired/xealousbrown/rules.mk * Update keyboards/handwired/xealousbrown/rules.mk
* Update to xealousbrown. 5-13ms Latency decrease, 4x scan rate improvement. (CUSTOM_MATRIX = lite) is a really great feature! * Updated Readme.md, added an extra speedhack. * More optimizations * Update keyboards/handwired/xealousbrown/rules.mk * Update keyboards/handwired/xealousbrown/rules.mk
* Update to xealousbrown. 5-13ms Latency decrease, 4x scan rate improvement. (CUSTOM_MATRIX = lite) is a really great feature! * Updated Readme.md, added an extra speedhack. * More optimizations * Update keyboards/handwired/xealousbrown/rules.mk * Update keyboards/handwired/xealousbrown/rules.mk
* Update to xealousbrown. 5-13ms Latency decrease, 4x scan rate improvement. (CUSTOM_MATRIX = lite) is a really great feature! * Updated Readme.md, added an extra speedhack. * More optimizations * Update keyboards/handwired/xealousbrown/rules.mk * Update keyboards/handwired/xealousbrown/rules.mk
* Update to xealousbrown. 5-13ms Latency decrease, 4x scan rate improvement. (CUSTOM_MATRIX = lite) is a really great feature! * Updated Readme.md, added an extra speedhack. * More optimizations * Update keyboards/handwired/xealousbrown/rules.mk * Update keyboards/handwired/xealousbrown/rules.mk
5-13ms Latency decrease, 4x scan rate improvement.
(CUSTOM_MATRIX = lite) is a really great feature!
Updated XealousBrown, various performance improvements.
Description
Types of Changes
Checklist