Cross-platform desktop app filesize comparison

Hello. I am the author of Desktop MP3, an offline music player focused on simplicity and ease-of-use. The MacOS version is built using Objective-C with Storyboard, and the Windows version is built using Delphi with FireMonkey. 

In this article, I want to show the differences between binary file sizes using different cross platform desktop frameworks.

Desktop MP3
Desktop MP3

In a post on X last year, I introduced the Desktop MP3 app, stated my wish to take the codebase cross-platform, and outlined some of the requirements I was looking for in a cross-platform framework. Among other things, one of the main points in that post is that I was looking for a framework that would produce a small binary size.

In the screenshot below you can see binary file sizes of proofs-of-concepts using different frameworks (or versions of those frameworks) that I have tried.

As you might have guessed, Electron resulted in producing the largest binary and the C or C++ based frameworks produce the smaller binaries.

Each framework comes with its own advantages or drawbacks as to what functionality comes included with the framework and what would have to be added. I'm referring to functionality like support for transparent forms, font rendering, UI components, audio playback, multiple windows, etc.

In the following screenshot you can see the proofs-of-concept built using several different frameworks. You'll notice immediately that some made it easier than others to do transparent forms and font rendering.



Side note: while the purpose of this article is to highlight the difference in binary file sizes, it is worth nothing that some frameworks render using immediate mode gui and others render using retained mode gui -- a topic which would be better served by a separate article with a deeper look into CPU and memory usage.

Anthony Tietjen is a software engineer with 15+ years experience spanning desktop, mobile and web development. Husband and father, with a passion for music. Connect with Anthony on LinkedIn and X/Twitter.

Comments

Popular posts from this blog

Adobe® Flex® Combobox: Selecting an Item Without Using SelectedIndex

Parameters Sent by TinyWebDB in App Inventor for Android