Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
If you're like me and you are a hard fan of word wrapping, in emacs 29, it looks like they added two variables which you can modify so emacs would perform better (performance is still not as smooth as vscode): long-line-threshold and large-hscroll-threshold. long-line-threshold works this way: if there exists a line in the current buffer that has more characters than the specified value, emacs would start the performance functionalities. Also large-hscroll-threshold also work the same way as long-line-threshold but it starts the performance functionalities when the wrapped line becomes more than the specified value. I'm not exactly sure if the conditions for both long-line-threshold and large-hscroll-threshold should be met for the perfomance functionalities to be enabled or only one of them meeting the condition would cause the functionalities to start. You can also see if the functionalities are enabled in the current buffer by evaluating the function long-line-optimizations-p. If evaluating (long-line-optimizations-p) returns nil, it means the performance improvements aren't applied, if it returns non nil, it means they are enabled. You can read more in here: https://github.com/emacs-mirror/emacs/blob/master/etc/NEWS.29 . Search for "Emacs is now capable of editing" in that page and the section about these features would come up. You should also disable features related to bidirectional editing and stuff.
But the performance of the 30.0.50 you downloaded from the GNU mirror is not far off. It can handle this large JSON file with ease: https://github.com/json-iterator/test-data/blob/master/large-file.json, either with the built-in JSON mode or with tree-sitter.