How do Delphi, WPF .NET Framework, and Electron perform compared to each other, and what’s the best way to make an objective comparison? Embarcadero commissioned a whitepaper to investigate the differences between Delphi, WPF .NET Framework, and Electron for building Windows desktop applications. The benchmark application – a Windows 10 Calculator clone – was recreated in each framework by three Delphi Most Valuable Professionals (MVPs) volunteers, one expert freelance WPF developer, and one expert Electron freelance developer. In this blog post, we are going to explore the Deployment Requirements metric which is part of the performance comparison used in the whitepaper.
What is the file size/number of files for the compiled project? Larger application sizes require more storage on user devices and longer download times while numerically more files can increase deployment complexity.
Each framework deployed its calculator differently. Delphi created one executable file that averaged 6.4 MB. WPF created an executable file and library file totaling less than 0.1 MB. The heavyweight of the group, Electron, produced 161 files totaling 198 MB due to its Chromium browser. Although lighter weight due to its use of the .NET Framework installed on recent Windows computers, WPF scored lower than Delphi due to producing two files. The second file may be optional (though it is generated at compile time) but the dependency on the .NET Framework is not. WPF .NET Framework applications do require that the correct .NET Framework also be installed on the machine (and is generally provided by default by Microsoft depending on your version of Windows). This can get even more complicated when working with older versions of Windows. In general, one file will be easier to manage than multiple files, as it can negate the need for an installer or scripts to update the application, and reduces network bandwidth requirements and hard drive use.
Additional and larger files can significantly increase loading times across the network. As in the case of Electron, where the slowest Electron network startup time was 19.66 seconds – twenty-three times slower than its slowest local time – indicating that Electron apps would be best deployed locally for consistent user experiences and might pose a significant problem for enterprises with large networked services or remote employees.
There are application packaging tools like UPX which can combine and compress Windows binaries to reduce loading time over a network. There may be additional third tools to combine and package Delphi, WPF .NET Framework apps, and Electron apps into a single executable but all of those options require additional steps.
Let’s take a look at each framework.
What are Delphi’s deployment requirements?
Delphi compiled to one executable binary file averaging 2-8 MB in size (2 MB for VCL versions, and 8 MB for FMX versions). By default, Delphi creates a stand-alone executable with no dependencies. It does have the option to create an executable that shares packages with other executables.
What are WPF .NET Framework’s deployment requirements?
WPF compiled to 2 files that were just 55 KB in size. It is possible to create a single WPF .NET Framework executable that does not have dependencies beyond .NET Framework itself and in the coarse of the whitepaper this was done. An optional config file is the second of the 2 files. However, the project compiled with assembly DLLs is depicted below. The .NET Framework installer is also included in the file listing. However, different versions of Windows provide different versions of the .NET Framework pre-installed. Find out which versions of .NET Framework come pre-installed on each version of Windows.
What are Electron’s deployment requirements?
Electron compiled to 151 files that measured 198 MB in size. Here is a list of all of the files that were deployed with the Electron application.
In conclusion, Delphi provides a single zero dependency executable by default with no configuration changes. Additional steps could be taken to compress the Delphi executable for even faster network load times. WPF .NET Framework does make it possible to create a single executable using the correct deployment configuration but it still requires the correct version of the .NET Framework exists on the machine where the binary is executed. Electron may have additional configuration options to reduce the overall files needed to deploy an Electron application but overall it is probably going to require a significant number of files to deploy. Electron can have significant degraded load times when executed over a network.