En fonction du type de test / application utilisée, l'algorithme utilisé pour traiter les données est différent. Il y en a des plus efficaces que d'autres. Un test en CLI (iperf, wget ou curl par exemple) sera toujours plus représentatif du débit réel car les ressources nécessaires pour afficher le résultat sont moindres.
Dans le cas d'un test via navigateur web, le résultat sera bridé par la capacité du moteur de rendu du navigateur à afficher le résultat dans la fenêtre, mais aussi à la rapidité du moteur de script utilisé, la gestion des flux réseau du navigateur etc. Jusqu'au Gbps, un navigateur récent sur un PC récent affichera des résultats corrects. Au-delà du Gbps, c'est un peu plus aléatoire.
L'application speedtest utilise d'autres technologies moins lourdes qu'un navigateur web, ce qui explique un résultat plus proche de la réalité.
Pour un téléchargement, JDownloader doit sûrement faire tout un tas de calculs entre les vérification des données téléchargées, la gestion de l'écriture dans un fichier tampon, puis leurs transfert vers le fichier de destination, contrôle de l'écriture, affichage du résultat, etc. Pour un programme écrit en Java (qui est compilé à la volée dans une machine virtuelle), ça nécessite énormément de calculs ce qui se voit sur ton processeur qui est à 100% et qui sature à traiter plus d'informations. Avec un programme écrit dans un autre langage de plus bas niveau (comme le C++ par exemple), on aurait de meilleurs résultats.