Saturday, November 29, 2008

Impact of the .NET Framework on Software Installations

The size of the .NET Framework redistributable exploded with versions 3.0 and and 3.5. This creates some difficult choices for vendors of rich-client applications, as a lengthy or unwieldy installation experience can easily discourage non-technical users from using your product. The Paint.NET folks have recently put a huge amount of effort into streamlining their installation process for this very reason.

It's easy to find the total download sizes of the various .NET framework distributions. But the actual time to download and install each one can be difficult to estimate. To get a better idea of the actual bootstrap install times, I ran a number of test installations on a VPC with the following configuration:

VPC OS Windows XP Pro SP2 + virtual machine additions
VPC Host 1.7GHz P4 running Windows XP Pro SP3
Internet Connection 4.0+ mbps cable modem

Notes on the Test Configuration and Methodology

  1. The test VPC is likely slower than a typical Windows XP machine. Spot checks with a significantly faster VPC host seemed to reduce installation times by about 15 percent across the board. Considering the performance-dampening cruft that accumulates on the average consumer PC, the processing power available here probably isn't that atypical.
  2. My Internet connection is faster than a "typical" 1.5mbps broadband connection. But this seemed a non-factor, as the download speeds reported by the .NET installers never exceeded 600 kbps.
  3. Installation times varied by as much as 40-50 percent between identical runs. For example, the fresh 3.5 Client Profile install ranged from 11 to 16 minutes. It wasn't always clear what caused the performance variations, but the main culprit seemed to be dropped or slow connections between the installers and the download server. The test results below show the shortest time for each install, not the average time.
  4. I ran each installation documented below at least 3-6 times. Generally, I ran more fresh installs and fewer upgrades.

Here are the resulting installation times:

Previously Installed .NET Version

New .NET Version Installed

Reboot Requested?

Bootstrap Download + Install Time

Time Saved by Upgrade

None .NET 2.0 SP1 No 10 minutes NA
None .NET 3.0 No 25 minutes NA
None .NET 3.5 SP1 No 17 minutes NA
None .NET 3.5 SP1 Client Profile No 11 minutes NA
.NET 2.0 .NET 3.0 No 17 minutes 8 minutes
.NET 2.0 .NET 3.5 SP1 No 21 minutes -4 minutes
.NET 2.0 .NET 3.5 SP1 Client Profile Yes 18 minutes -7 minutes
.NET 3.0 .NET 3.5 SP1 Yes 17 minutes 0 minutes
.NET 3.0 .NET 3.5 SP1 Client Profile Yes 18 minutes -7 minutes

Notes on the Test Results

  1. In most cases, an existing .NET installation actually makes the installation significantly longer, with the exception being the 2.0 to 3.0 upgrade.
  2. 3.5 performance is considerably improved over 3.0, even for the full 3.5 distribution.
  3. A fresh install of the 3.5 Client Profile runs nearly as fast as a fresh 2.0 install.
  4. The 2.0 to 3.5 upgrade request a reboot for the Client Profile installer, but not when installing the full 3.5 distribution. Weird. And unfortunate.
  5. The 3.5 Client Profile installer is much nicer for non-technical users than any of the other installers.

Conclusions

If you're deciding whether to target .NET 3.0 or .NET 3.5, then 3.5 is a no-brainer--even if you need the full 3.5 distribution. If you can get away with the 3.5 client profile, then going with 3.5 is really a no-brainer.

The choice between 2.0 and 3.5 is more difficult, especially if most potential users are already on .NET 2.0. In this scenario, there would be no .NET install for users on 2.0 and a short (10 min) .NET install for users with no previous .NET installation. Upgrading to 3.5, on the other hand, would result in a much longer (18 min) install plus a reboot for users on .NET 2.0 (client profile install only). There are two mitigating factors that might lead you to consider going with 3.5 over 2.0 regardless of these drawbacks:

  1. As I mentioned above, the .NET 3.5 Client Profile installer is much nicer for end-users than any of the other installers, with minimal user-interaction required.
  2. Apparently Windows Update will soon push .NET 3.5 SP1 out to machines with .NET 2.0 already installed, so many users currently on 2.0 will not experience the long install plus reboot required for the 2.0 to 3.5 Client Profile upgrade. (I read this on one of the Microsoft blogs, but can't find the link at the moment.)

UPDATE: As one reader pointed out, the full .NET 3.5 SP1 framework is quietly installed any time you perform an upgrade, rather than the client profile. That explains why the upgrade installations took about the same time whether running the client profile or full framework installer. Here's a reference document that explains what happens with various OS's and upgrades. From that document:

NOTE: The .NET Framework Client Profile is targeted for Windows XP computers with no .NET Framework components installed. If the .NET Framework Client Profile installation process detects any other operating system version or any version of .NET Framework installed, the Client Profile installer will install .NET Framework 3.5 Service Pack 1.

2 comments:

Dan said...

Did you try these tests from the fully downloaded installer, instead of doing the download each time?

Location of full installer:
http://download.microsoft.com/download/2/0/e/20e90413-712f-438c-988e-fdaa79a8ac3d/dotnetfx35.exe

Ashley Tate said...

Dan,

I did not test the full-package installers, only the bootstrap installers (with one exception), so the download time is included in all test runs.

The one exception is the .NET 2.0 SP1 installation, for which no bootstrap installer appears available. However, in that case I included the up-front package download time in the results to allow an equivalent comparison for all .NET versions.

 
Header photo courtesy of: http://www.flickr.com/photos/tmartin/ / CC BY-NC 2.0