Currently the download candidates to-try-next seem to be selected mostly randomly, which isn't optimal for restarting the download after a restart of phex.
I think the code could be optimized, if the download candidates would rather be selected depending on the amount of data we already downloaded from them.
This builds on the expectation that those who were the best nodes for us before are likely to also be the best in the future - for example after a restart.
Also it automatically archieves limited optimization: If a node is fast in the beginning but then slows down, but another becomes faster, that other node will rise in the order of nodes to try. Since it is limited to a single download, the optimization shouldn't have long-term consequences.