I’ve used JupyterLab off and on for the past couple years and heavily in the last couple weeks. I’ve noticed performance issues during this time which have brought me to a crossroads, where I am trying to decide whether to continue investing in this platform or whether I should look into other options.
First, the good: I really like the feature set that JupyterLab is offering-- flexible arrangement of notebooks, management of multiple kernels, embedded consoles/editors, etc etc. There is enormous potential in bringing these things all together in a unified and extensible graphical environment usable across languages. This is what attracted me to JupyterLab in the first place, and I still believe in the vision. The JupyterLab of my dreams is like (Neo)Vim but built with data visualization in mind: extremely efficient for manipulating text, capable of managing 10s to hundreds of open files/notebooks/terminals at once, extensible for developers, customizable by users, usable across many languages, large user community… Free is good but I would gladly pay a sizable sum for such an app.
However, the vast majority of the time I end up using JupyterLab to, at most, edit two notebooks side by side. This is a far cry from the way I would like to be using it. The reason for this discrepancy is JupyterLab’s UI performance. We’re talking:
- very laggy scrolling: several seconds to quick scroll from the bottom to the top of a 50-cell notebook
- 5 second lag to expand the sidebar (command palette area)
- 10 second lag to move a tab
- 1-second lag for keyboard input
The lag is not very bad if I open a fresh instance with no open notebooks (although even then, the UI seems much more sluggish than it should be). But as I begin to work, the lag gets worse and worse. It is at least roughly a function of how many notebooks I have open and how many visualizations they contain (I use mostly Bokeh/Matplotlib for visualizations via Holoviews).
I’m not sure why having multiple idle notebooks open or kernels running should kneecap performance as badly as it does. It seems like any change in a visible element (typing in a notebook cell or scrolling a notebook) somehow has to cascade through JupyterLab’s entire saved state, including off-screen elements in totally separate documents. I have not looked at JupyterLab’s architecture, but naively it seems as if there is some fundamental foundational flaw.
I didn’t post this to complain, but rather to describe what I’m experiencing and to find out:
- Are other people experiencing the same issues? Is there any kind of community consensus that this is a problem?
- Does the JupyterLab team have plans to focus on performance in the near future? Is anyone paid to work on this project full-time (seems like someone should be! Tons of people are using Jupyter notebooks now)?
Like I said, I believe in the JupyterLab vision, and I really appreciate the hard work that’s already been put into this project. But the current performance is a dealbreaker. Searching this forum I could not find any existing thread focused on these issues, so I am opening this one.