As you might know if you’ve read the previous entries, I’m currently migrating RandFill from plain Win32 code to a mix of Win32 and Qt 5 code (mainly the GUI parts, at the moment).
It’s still a work-in-progress, but since the basic project builds again, I wanted to check the sizes of the old and new versions, just for the fun of it. I knew that depending on the Qt runtime libraries would cost me in terms kilobytes, but this direct comparison is sobering for the kind of small utility program that RandFill is.
Pure Win32-API, multi-byte character set, 32-bit build…
Which adds up to 288 KB in total. The actual NSIS setup file comes with 201 KB.
Win32 and Qt 5, Unicode, …
As a 32-bit installation on Windows Vista this adds up to 12'482 KB in total. The actual NSIS setup file comes with 5'728 KB.
As a 64-bit Unicode installation on Windows 7 this adds up to a whopping 15'268 KB in total. The actual NSIS setup file comes with 6'827 KB.
- The Qt 5 libraries have been built by myself, and although I excluded some modules, there might be room for improvements (but I doubt that the gain would be very high).
- All builds and the Qt library are in Release mode.
All builds are dynamically linked to the Microsoft C Run-Time and Standard C++ libraries, meaning thatfor actual deployment I would also need to bundle the setup with Microsoft’s Visual C++ Redistributable Packages (vcredist_*.exe) or at least provide a link to it.
Update 2015-03-13: Actually, as I discovered in the meantime, the application (exe) and devices library (DLL) were statically linked, and only the Qt files dynamically. This mismatch would lead to some interesting errors later on…
Well, that’s progress 😉
But seriously, of course for such a small tool the footprint is too big, but Qt makes the (GUI) development much easier for me and if the program grows (or for other, more complex programs), the foundation will almost stay the same (I hope…).