• Share this article:

Eclipse Theia IDE: A Look at Leaps in Performance

Wednesday, April 3, 2024 - 10:53 by John Kellerman
XKCD: Compiling by Randal Monroe

Developers hate waiting. In the ever-evolving landscape of Integrated Development Environments (IDEs), the quest for swifter, more efficient tools remains a constant pursuit. Enter Eclipse Theia IDE. This is more than a rebrand of Theia Blueprint. It is a statement that this IDE is ready for prime time and to provide a great user experience. It is a statement that the feature set, stability and performance have all improved to the point where the product provides a compelling user experience. We will explore a bit of the performance improvements with Theia IDE startup time and compare it historically. This should lead to a more streamlined development journey.

Objectively speaking, Eclipse Theia IDE delivers a noticeable boost in performance over the “Theia Blueprints” releases 3 months ago, Test Debug Lifecycle particularly evident during the startup phase. To get to this point, smart engineering was used. The Theia developers started by measuring execution time in a repeatable way. This phase is called instrumentation. After that, they observed the results and improved the performance dominators. This showed them where to look and where to optimize. After that, they identify an issue, fix it and repeat the process to continually make things faster.

The Theia developers set up a  site to observe performance changes. The tests were run on github runners, which are quite fast, but more importantly, are quite stable in practical terms. Two runs on the infrastructure yielded reproducible changes.

The following chart shows the total “Startup time.” It does not show a complete picture though as it does not show when users can begin to interact with the UI. You can see there were significant speedups in November, where the performance has more than doubled. The time from initialization to a responsive UI has improved by about the same factor too! There were a few observed speedups on Jan 21st. This is due to the “implement headless plug-ins” patch which defers plug-in loading. These were done by Tobias Ortmayr, Philip Langer, Jonas Helming, Stefan Dirix, Thomas Maeder and more.

Test Results Graph

The Theia developers  used Eclipse Trace Compass to compare the execution times. If you’d like, you can reproduce the findings yourself. In the theia-e2e-test-suite GitHub repo, run the get_trace.py script to reproduce the experiment.

Eclipse Trace Compass Flame Chart

The view above is the flame chart. It shows the call stack over time. Trace Compass has the ability to synchronize two runs and compare them. With this data layout, it becomes clear that startplugins was a major dominator before, and was reduced. However, every item on the UI thread (front end) seems to have accelerated aggressively. This is great news as the UI thread is resource limited, it could require a UI thread whereas the back-end can eventually multi-threaded more easily.

We must however acknowledge the unknown. The response to first click is measured here with 20% unknown (see above the pink boxes). The unknown is probably due to the Theia plug-in being downloaded to the browser. However, it needs to be confirmed and a trace point on that transaction would need to be added

Trace Compass Flart Chart: Unknown

If the full transaction, i.e. the full initialization and not just interactivity, is considered, almost 80% of the time is unknown. With the data we have, it is not clear what is happening. One possibility is this is when plug-ins are lazy-loaded. It is bounded by the backend operation, and so this could be seen as a "known unknown." While this may initially seem daunting, it presents an opportunity for further exploration and refinement. For example, by instrumenting the plug-in API, the initialization time of plug-ins would be known and a misbehaving plug-in on the critical path of start-up could be identified.

Having a proper, more complete test bench and suite is an opportunity for more visibility in the long run. The partially instrumented code is a good first step, meaning that we need to instrument more, to fill in the gaps. When the code instrumentation is complete for a given test execution flow, more test flows can be then added. This then presents additional opportunities to update the instrumentation. 

Will Rogers is attributed to saying “You never get a second chance to make a first impression.” The startup time is the first thing anyone sees when opening a new product, and the Theia community has optimized it, showing their concern with the user experience. This shows the general attitude and the work towards justifying the rebrand from Blueprint to IDE. Its strides in startup performance are the first step on a journey of ongoing enhancement and refinement. As the team continues down this path, the community is optimistic and anticipating what lies ahead. (spoiler alerts: backendless, remote and multi-player!)

With Eclipse Theia IDE arriving on the scene, developers have another viable contender that offers rich features, a vibrant community and a tight experience.

Matthew Khouzam,
Director, Eclipse Foundation
Product Owner/Developer, Ericsson AB

John Kellerman
Program Manager Cloud DevTools and Open VSX
Eclipse Foundation