A more realistic test is to ask for successive slices of some data, and see if multithreading speeds things up. So I made a test that makes data requests like send:
http://motherlode.ucar.edu:8081/thredds/dodsC/fmrc/NCEP/GFS/Global_0p5deg/files/GFS_Global_0p5deg_20090115_0000.grib2.dods?
Absolute_vorticity[0][0][0:1:360][0:1:719]
Absolute_vorticity[1][0][0:1:360][0:1:719]
...
Each request is 1 Mbyte. These are grib2 files, which may be jpeg2000 encoded (im not sure in this particular file).
So each thread makes 20 requests of successive slices, and I try this
with 1-14 simultaneous threads. The plot below is the speedup factor.
Its pretty impressively linear, up to about 9 threads, then things get
slower but then recover again. Not sure if that's meaningful - I need to
run this 100 times and average.