Performance
SysIDE tools are designed to be fast and efficient, and we have benchmarks to prove it. Below is a performance comparison between the open-source Editor and the paid Pro Suite (Modeler and Automator) tools as well as a more detailed breakdown on the performance of Pro Suite.
Pro Suite tools vs Editor
Table below contains performance comparison between capabilities of Pro Suite tools and the open-source Editor. Even though the latter does not implement some more expensive validation checks, like inherited name duplication and type checking, its validation still takes over 30-40 times as long on a single thread.
Note
We are planning to take advantage of Pro Suite’s performance and provide Editor’s functionality in Modeler.
* As mentioned, Editor does not implement some of the more expensive validation checks
Detailed Performance Metrics
More Details
As SysIDE is still under active development, multithreading is implemented only partially – some phases of the pipeline are single-threaded. Table below shows comparison of analysing the standard library and accompanying examples from here with varying number of threads.
The tests were done with /usr/bin/time -vp
on CachyOS using Ryzen 7950X3D, with
mimalloc
injected using LD_PRELOAD=/usr/lib/libmimalloc.so
. For comparison, the
last column shows multithreaded performance using the standard allocator. While
mimalloc
yields significant wall clock time improvement, memory usage is nearly
double compared to the standard allocator so the actual choice may depend user
preferences and system configuration. Systems with low memory may want to keep using
standard allocator if memory pressure is an issue. We will look into improving memory
usage in the future.
Currently, the multithreaded performance is bottlenecked by single-threaded semantic resolution phase, and less so by suboptimal AST build phase. With 8 or more threads, semantic resolution takes over 50% of the total pipeline time. These issues will be addressed in future updates.
Additionally, performance can be improved further by indexing and caching relevant information on disk.