I'm using Inno Setup to create some executables, and I've noticed that compiling the setup takes significantly longer time when calling the Inno Setup compiler from FinalBuilder 5.5.0.240.
If I open the project in Inno Setup and start the comiler from there: 02:44 If I use the FinalBuilder Inno Setup task on the same project: 08:04
This is not much of a difference, but if you have more executables this soon starts to add up... Any thoughts?
Disabling “Show Progress” can improve the speed of the action dramatically if the Innosetup project is large. The downside of this is that you won’t have progress reporting for the action. Let us know if this solves the speed issue you’re seeing.
"Show Progress" has now been disabled, but I noticed no change in the performance. However I did make some other oberservations.
( I'm running this on a 4 core cpu, and InnoSetup has the cpu happily crunching on 25% when I'm compiling. )
Total time: 8:04 Time until cpu activity: 3:40 Cpu load: 17-21% (with drops down to 0% for a couple of seconds every so often)
So from I start the task in FinalBuilder until the cpu starts doing something, it takes 3:40 mins. I think this is the process where InnoSetup reads all the files in the project (some 5400 files). So it looks like reading those files are considerably slower when using FinalBuilder to execute the InnoSetup project.
When compressing the files with InnoSetup I have 25% cpu activity (full load on one core). When using FinalBuilder to execute the InnoSetup project I notice the cpu activity being around 17-21%, and I also notice that every so often the cpu activity drops to 0% for a couple of seconds (I'm guessing this might be after a chunk of files or when starting on a larger file).
The FinalBuilder Innosetup action uses the Innosetup api, we provide a callback function so that status information can be provided. My experience is that this does introduce some overhead. One way to get around this would be to use the Execute program action andcall the innosetup compiler directly. This will be much faster, the downside is that you get no progress indication during compilation.
Execute Program worked like a charm, and saves me 20 minutes.
I'm more interested in automating the process than getting progress status on the screen, so I'm not too concearned about the lack of status progress when running it this way. Thanks for the quick response.
I just took a look at the action and did some quick performance optimisations, with startling results. We use Inno Setup in our own build process, and here's what I got:
FinalBuilder 5 Installer Before: 4:26 After: 0:53
FinalBuilder Server Installer Before: 1:11 After: 0:14
... I guess there was room for improvement after all. Of course, if you're happy using the Execute Program solution then you may as well stick with that.
Here's a test build with the updated Inno action: https://www.finalbuilder.com/downloads/finalbuilder/550/FB550_366.exe
Thanks for the quick response and fix. I just tested it and I'm very impressed. Here are some numbers: Before fix: 27 mins Execute Program: 8 mins After fix: 9 mins
This fix makes a world of difference for me, and I'm very happy with how fast the fix was provided (and the suggestions on how to work around this problem).