Skip to main content

Slow compilation

Due to its nature, SKIE adds some overhead to the Kotlin link task that builds the Objective-C framework. We generally observe that SKIE adds around 20-30 % overhead to the link task with the default settings.

tip

SKIE partially supports Swift incremental compilation, which can significantly reduce the added overhead for incremental builds. This incremental compilation currently only works on a module level, so the Objective-C header file must not change. Therefore, any change to signatures of exported declarations (classes, functions, etc.) will invalidate this incremental compilation. However, you can change the implementations of exported functions or make any changes to non-exported declarations (for example, private or internal declarations).

We plan to implement a more granular incremental compilation in the near future.

How much overhead SKIE adds depends on multiple factors, mainly:

  • the size of your project, more precisely, the number of exported declarations (classes, functions, etc.)
  • which SKIE features do you use, and how much do you use them
  • how well optimized your project build time is
tip

We strongly recommend limiting the number of exported classes because that negatively impacts compilation time and binary size. This is true even without SKIE, but the effect is even more pronounced with SKIE because SKIE only processes exported declarations.

Feedback needed

We are continuously working on reducing the added overhead, but we need your help with identifying performance bottlenecks. Each project is different, and some inefficiencies really only show up in large projects. So, if you are experiencing a significant increase in compilation time, please let us know.