Actifsource

#2 [Performance] Service and builder optimizations for large workspaces

Actifsource code generator for any programming language

Performance analysis of Actifsource was carried out on a large customer model (services: NameResourceIndex, TransientResource, Validator, Generator, Builder). The following optimizations have been implemented.

Implemented optimizations

  • Logging option Function Duration Time added, so individual Java and Selector functions can be profiled.
  • Listener evaluation moved off the GUI thread — only the notification itself is executed in the GUI thread. A large number of model inconsistencies no longer blocks the UI.
  • Revalidation list lock split into separate locks for resources and scopes.
  • Builder integrated into the ServiceCoordinator, split into two Actifsource builders: a non-interruptible one (ch.actifsource.persistent.builder, e.g. ClassChangeBuilder) and an interruptible one (ch.actifsource.builder). This avoids repeated builder runs (e.g. triggered by the Java builder) and no longer blocks the workspace.
  • Immediate service shutdown when Eclipse is closed, so Eclipse terminates quickly.

Builder configuration and migration

  • Existing projects are converted automatically to the legacy builder and therefore behave exactly as before. They do not profit from the builder-related performance improvements until they are migrated manually.
  • Newly created projects automatically use the new performance builders.

To migrate a legacy project, replace the following build command in the project's .project file

2 2

2 1