Open yay opened 2 years ago
Hi @yay,
Thanks for reaching out, and sorry to hear you're experiencing poor performance!
This is definitely not expected (especially with OpenGL rendering enabled), so we should investigate this further.
When you have a spare moment, could you share the following information:
Preferences > Preferences... > Advanced > Hardware Acceleration
Tools > Show Console
)
It should look similar to this:
OpenGL Context Information:
GL API Version: 4.6 (Core Profile) Mesa 21.2.6
GLSL Version: 4.60
Vendor: AMD
Renderer: Radeon RX 570 Series (POLARIS10, DRM 3.41.0, 5.13.0-44-generic, LLVM 12.0.1)
Help > Debug Information
Cheers, - Dylan from Sublime HQ
Sure:
OpenGL Context Information:
GL API Version: 4.1 Metal - 76.3
GLSL Version: 4.10
Vendor: Apple
Renderer: Apple M1 Pro
=== App Version Information ===
Build: 2071
=== Git Version Information === Using Git: git (system) git version 2.32.1 (Apple Git-133) PATH: /opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Library/Apple/usr/bin:/Users/vitaly/.cargo/bin (from shell) environment variables loaded using: /bin/zsh -l
=== Browse Page Information === HEAD: 42588e6b2075752fb94667a954604f5b088a0fff Is in merge: 0 Is in cherry_pick: 0 Is in rebase: 0 Is in revert: 0
=== Git Status Information === M binary-trees/bump/bump.odin
=== Our Status Information === M binary-trees/bump/bump.odin
=== Git Config Information === branch.main.merge=refs/heads/main branch.main.remote=origin commit.template=/Users/vitaly/.stCommitMsg core.bare=false core.excludesfile=/Users/vitaly/.gitignore_global core.filemode=true core.ignorecase=true core.logallrefupdates=true core.precomposeunicode=true core.repositoryformatversion=0 credential.helper=osxkeychain difftool.sourcetree.cmd=opendiff "$LOCAL" "$REMOTE" difftool.sourcetree.path= filter.lfs.clean=git-lfs clean -- %f filter.lfs.process=git-lfs filter-process filter.lfs.required=true filter.lfs.smudge=git-lfs smudge -- %f http.postbuffer=1048576 mergetool.sourcetree.cmd=/Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh "$LOCAL" "$REMOTE" -ancestor "$BASE" -merge "$MERGED" mergetool.sourcetree.trustexitcode=true pull.rebase=true remote.origin.fetch=+refs/heads/:refs/remotes/origin/ remote.origin.url=https://github.com/yay/odin-ks.git user.email=*** user.name=Vitalii Kravchenko
=== Our Config Information === Git Config Path Information Using config path: /etc/gitconfig Using config path: /Users/vitaly/.config/git/config Using config path: /Users/vitaly/.gitconfig Using config path: /Users/vitaly/projects/odin-ks/.git/config
Our config output is different to the Git config output branch.main.merge=refs/heads/main branch.main.remote=origin commit.template=/Users/vitaly/.stCommitMsg core.bare=false core.excludesfile=/Users/vitaly/.gitignore_global core.filemode=true core.ignorecase=true core.logallrefupdates=true core.precomposeunicode=true core.repositoryformatversion=0 difftool.sourcetree.cmd=opendiff "$LOCAL" "$REMOTE" difftool.sourcetree.path= filter.lfs.clean=git-lfs clean -- %f filter.lfs.process=git-lfs filter-process filter.lfs.required=true filter.lfs.smudge=git-lfs smudge -- %f http.postbuffer=1048576 mergetool.sourcetree.cmd=/Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh "$LOCAL" "$REMOTE" -ancestor "$BASE" -merge "$MERGED" mergetool.sourcetree.trustexitcode=true pull.rebase=true remote.origin.fetch=+refs/heads/:refs/remotes/origin/ remote.origin.url=https://github.com/yay/odin-ks.git user.email=*** user.name=Vitalii Kravchenko
=== Git Attributes Information === git check_attr --all output binary-trees/bump/bump.odin
=== Our Modified Files Newline Normalisation and EOL Information === binary-trees/bump/bump.odin: unspecified - native
=== Our Modified Files Flag Information === Ignoring symlinks: 0 binary-trees/bump/bump.odin: Working - Normal File : Index - Normal File
- Specifically this commit `2abdfdf265f55b91b0dde50d1f4cad6372d33b44` ("Multi-threaded binary trees") in the https://github.com/yay/odin-ks repo, even though `out.ppm` diff is collapsed, it still seems to affect rendering performance with just `main.odin` diff showing.
Hi @yay,
Thanks for this additional information - I've identified the cause of the issue, and I am investigating a fix. As a workaround for the meantime, you can disable word-wrap in the diffs.
This can be done by opening the context menu of any diff, and selecting Word Wrap > Disabled
Thank you for your patience while I investigate this further.
Kind regards, - Dylan from Sublime HQ
A quick update on this. There's also a scroll animation :)
https://user-images.githubusercontent.com/1799756/183781929-c80befaa-326f-4824-b02b-8a486498ad46.mp4
Hi,
I guess you're using Skia with OpenGL backend under the hood, but honesly, the GUI is kinda slow and choppy when resizing the Sublime Merge window with only a moderate amount of diff information in it. That's on a 10-core M1 Pro which has stellar single core performance.
I feel like that wouldn't happen if you used native GUI (I guess that won't happen because this is a cross-platform app) or even web GUI, because browser layout/rasterization has been optimized to oblivion. The same diff opened in SourceTree for mac resizes like butter.
I also don't feel like bundling Electron would be that big of a deal memory wise either. My Sublime Merge is using 440MB of ram right after launch. I only have 3 tabs in it with https://github.com/odin-lang/Odin, https://github.com/DanielGavin/ols and https://github.com/yay/odin-ks repos open.
Anything you can do to make GUI rendering faster?