-
Notifications
You must be signed in to change notification settings - Fork 274
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
Oni2 struggles with a simple stress test #296
Comments
Thanks @Apostolique ! This will be a good test case for us. For this particular issue - we'll need to track down if we're actually getting the buffer lines via the buffer update, and if so, if we're choking on that update (and at what point). Planning on doing some stability / perf work in June prior to dropping releases. We need to build up an infra to run these sorts of tests. |
A couple other stress test cases I'm interested in:
|
A good test might also be to define a macro and execute it a lot of times. I've noticed that in some editors emulating vim that macro's can be excruciating slow. |
Huh, |
Thanks for trying it out @somebody1234 ! If you run with the |
The error you get on pasting is as follows: Fatal error: exception Stack overflow
Raised by primitive operation at file "src/editor/Neovim/NeovimApi.re", line 55, characters 2-17
Called from file "list.ml", line 106, characters 12-15
Called from file "list.ml", line 106, characters 12-15
Called from file "list.ml", line 106, characters 12-15
Called from file "src/Core/Tick.re", line 33, characters 8-25
Called from file "list.ml", line 88, characters 20-23
Called from file "src/Core/Tick.re", line 39, characters 22-50
Called from file "src/Core/App.re", line 62, characters 4-23
Called from file "src/glfw.re", line 192, characters 19-31
Called from file "src/editor/bin/Oni2.re", line 166, characters 0-1 The first line is unlocking a mutex, then most of it goes into revery code by the looks of it. |
Thanks @CrossR ! Looks like there is a bug somewhere in one of our handlers for messages in NeovimApi: https://github.com/onivim/oni2/blob/master/src/editor/Neovim/NeovimApi.re (At least, one of the places where we are calling |
We must be using a |
Stack trace is pointing to a use of |
I've given this a try out with the latest master, and can confirm that with a Pasting 20 million also worked, with a slight delay on paste, and very slow scrolling after. |
Nice, thanks for testing this out @CrossR ! Seems like we're improved from where we were. It'd be nice to get the undo case working (I suspect that either I'd also like to add some benchmark / stress tests to |
I did a simple stress test in Oni2. I start with a blank buffer. I write
Hello
on the first line. Then I yank the line and paste it 3 million times using3000000p
. This crashes Oni2.I can do the same with neovim with no issues. The lines are pasted instantly. In fact, I can paste an incredible amount of lines. Neovim will accept 20 million lines without any issues.
The text was updated successfully, but these errors were encountered: