i'm not sure pipelining will help that much. to kn...
# graviton-browser
m
i'm not sure pipelining will help that much. to know what the next dependency set to fetch is, you have to wait for the first one. so you're exploring the graph and each level adds another round-trip
o
Not really, first pom you get gives you a number of next level poms, which you can pipeline.
m
right. i wonder to what extent aether is thread-bottlenecked. i had a quick rummage to try and figure out how much parallelism it was using but no luck. it looks like it's doing at least some downloads in parallel but the question is, how many
o
Pipelining is not about parallelism… It’s when you sent N http requests to the same keep-alive connection without waiting for a response, and then receive responses (in the same order). It very much reduces effect of latency.
Especially for many small files
Basically, if you resolve POMs one by one as you discover, you pay latency N (number of poms) times, and if you pipeline, it’s only ~ log N (in fact tree depth)
m
yes i know. but if you have 10 files and you know their URLs, you can also open 10 connections and make non pipelined requests.
i'm assuming that's what aether is doing, but i'm not sure.
you're totally right though that it's the lowest hanging fruit for latency optimisations