Compiling a 2000+ Objects Extension

Let’s start diving into working with Extensions in Real Life. I have a lot to blog about and at first I thought I would blog about a very small extension but I’m sure you’ve all seen that.

Let’s start big!

At NAVTechDays I showed you the extension I created with the ForNAV converter that resulted in 2149 files which compiles and executes.

I made the extension work on Business Central OnPrem, installed on my local box with the RTM version.

What is the Build Time? It must be horrible…

You are probably most curious about the build time for this extension. It takes 30 seconds on the RTM version. Not bad, but not perfect either.

Now Microsoft promised that they would improve this experience because they also need it themselves. They asked me to text CU1 and the Daily Docker builds to see if that improves performance.

Runtime 2.1

Today I’ve installed version 2.1.69331 of the compiler and the build time went down to an average of 18 seconds. That is a great improvement! Well done team!

Break it down!

I’m going to keep this version of my extension to test the next versions to see if more improvements come our way.

However, I am also going to break down the monolith and see if I can get to smaller components.

This will also improve the maintainability and makes responsibilities more clear when working with multiple developers.

What’s the perfect size?

If you had asked me that three months ago I would have said 100-200 objects max. But now I think 500 objects should work fine from a compiler perspective.

Remember that when you break your ISV solution down you’ll most likely end up with more objects as you will create table and page extensions on your own objects. It will also be harder to assign object id’s.

To be continued…

 

 

3 Comments

  1. Robin Dobbermann says:

    We have a 8000 Objects Extension and the publishing & sync time on the central docker server are round about 10 Minutes in BC 16.1. Is there a way to speed the process up? The NST needs over 25GB RAM in the time of publish and sync. We use a Azure Server with over 224GB of RAM and a 16 core Intel 3.1 Ghz Baseclock machine. Thank you! Other experiences would help me very much. And on a local machine you can totally forget it. With this amount of RAM usage every developer pc explodes, when they have VS Code open with a 8000 objects extension.
    Is the only solution to break this up and put it in modular smaller extensions?

    Like

Leave a Comment

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.