Mister Download Manager
  1. Home
  2. Benchmark

IDM vs MDM, timed to the millisecond.

Both apps on the same PC, downloading from the same test server, in alternating runs. The server's own log says when each request arrived and when the last byte left, so nothing relies on either app's word.

The race

Mister Download Manager
0.00 sReady
Internet Download Manager 6.42
0.00 sReady

1.0×faster

Played in real time from the medians.

Faster in every scenario.

How many times faster MDM finished, from command to finished file. The whisker is the 95% interval of the ratio; the scale is logarithmic.

480 connections against 2.

A server that allows two connections at a time. Every square is one connection it saw in a typical run.

MDM0

Learns the limit from the server's answer, keeps to it, and remembers it for next time. Finished in 12.6 s.

IDM 6.420

Retried about 250 times a second against the refusals. Finished in 15.9 s.

Every run is a dot.

Seven downloads, each run at least seven times by both apps. The bar is the middle half of the runs, the line the median.

IDM takes about three seconds to accept a download from its command line before it sends anything; downloads caught by its browser extension skip that step. That is why "Transfer" is the fair engine-to-engine view. "End to end" is here too.

Where the time goes

Median startup (command to first request), transfer and finish of each app, per scenario.

What it costs the computer

Median CPU time each app used during a run, and its peak memory. MDM draws its window with the GPU, which takes more memory than IDM's classic Windows controls.

All the numbers
ScenarioAppnEnd to end, median (IQR)95% CI of medianTransferStartupConnectionsRequestsCPUPeak memoryp

The report

End-to-end medians with interquartile ranges, the ratio with its 95% interval, and the Mann–Whitney test, as tools/bench/report.py writes them.

scenario IDM median ms (IQR) MDM median ms (IQR) IDM / MDM (95% CI) p (Mann-Whitney)
1 GiB over a fast local link 5456 (5393–5496) 1009 (944–1028) 5.41× (5.21–5.89) 0.000583
100 MiB, 2 MB/s per connection 10234 (10221–10284) 6319 (6317–6329) 1.62× (1.61–1.63) 0.000583
100 MiB, 150 ms latency, 4 MB/s per connection 7622 (7497–7863) 3844 (3842–3894) 1.98× (1.92–2.05) 0.000583
32 MiB, one connection in three crawls at 128 KB/s 7213 (6960–7256) 3432 (3416–3840) 2.10× (1.81–2.13) 0.000583
50 MiB, server allows 2 connections, 2 MB/s each 15864 (15810–15933) 12568 (12563–12570) 1.26× (1.25–1.27) 0.000583
50 MiB, every 2nd connection cut after 2 MiB, 4 MB/s 5428 (5387–5466) 1647 (1645–1660) 3.30× (3.24–3.34) 0.000583
256 KiB file over a fast local link 3141 (3130–3164) 30 (28–31) 105.90× (99.96–112.75) 3.39e-06

13th Gen Intel(R) Core(TM) i5-13400F, 63.8 GB RAM, Windows-11-10.0.26200-SP0. labserver (this repo), 127.0.0.1:8097, generated content. both at defaults: 8 connections.

How it was measured

  • Server. The lab server from this repository, on 127.0.0.1, serving generated content. It throttles, delays, refuses or cuts connections per scenario, and logs every request with millisecond start and end times.
  • Clients. IDM and MDM, both at default settings (8 connections), each given the download through the same documented command line: /d URL /p folder /f name /n. Both save to the drive that holds IDM's temporary folder, so neither pays a cross-drive copy.
  • Timing. End to end: from issuing the command to the finished file under its final name, polled every millisecond on a monotonic clock. MDM renames its finished file into place; IDM creates the final file early and fills it, so for IDM the moment it reaches full size counts. Transfer: the server's first request to its last byte, read on the same clock through a calibration request before each run.
  • Fairness. The apps alternate, IDM first on even runs and MDM first on odd ones, so drift on the machine hits both. One warm-up run each is discarded. Failed runs are counted, not dropped. Before every run the harness waits until the loopback is quiet: against a server that refuses extra connections IDM retries about 250 times a second, leaving thousands of closed sockets for half a minute; without the wait, whichever app ran next was timed on that backlog.
  • Statistics. Medians with interquartile ranges, bootstrap 95% intervals (10,000 resamples) for each median and for the ratio of medians, and a two-sided Mann–Whitney U test.
  • Limits. A loopback link has no real distance or packet loss; the faults stand in for them. Results are from one machine. Run it yourself: python tools/bench/bench.py, then python tools/bench/report.py.

See it for yourself: it's free.

Download Mister Download Manager