Well, I have been searching for an answer for this question for some time and ended up mostly on BITS articles explaining how BITS worked. I did spend some time with BITS for a recent project so I know few things around it. Here is my question from StackOverflow with 0 answers http://stackoverflow.com/questions/3148114/background-intelligent-transfer-servicebits-download-speed-really-slow.
Anyways, I decided to do some experiments around downloading files with BITS on a Windows XP SP3 machine with a LAN connection of 100Mbps. I guess it is a typical office connection. There are several network related services running on my machine, like VNC, Microsoft Office Communicator, Microsoft Outlook, Symantec Antivirus, and 1 other custom service. For testing, I have about 20 files, total size of around 8.5 Mb, and 1 zip file of almost same size.
Below are my observations for time taken in different conditions.
|BITS job Priority||20 Files (8.5Mb)||1 zip file (8.56Mb)|
|Normal||35 min||16 min|
|Foreground||7.3 msec||2.5 msec|
I know there is a startling difference between Normal and Foreground priority jobs, but it really depends on how much network throttling is done by BITS. But the point I want to make here is see the difference between the time taken for downloading 20 files and time taken to get 1 file or same size. BITS uses Round Robin algorithm within a queue of jobs of same priority. Thus having just 1 file improves the situation for BITS.
If you are responsible for building a tool which uses BITS to download stuff from a server on client machines, and you do not have control over the network policies and all that, at least try to zip all the files into 1 and download it. It surely improves the speed. If you are allowed to change the priorities of jobs, give an option to the user saying something like “Download Now”, which would change the Job priority to Foreground and things would come blazingly fast on the machine (hopefully!)