A little research on how a ADC works seems to be in order. An ADC charges a capacitor, using the input voltage, and a resistor to control current flow. It times how long it takes to charge the capacitor. The value returned by analogRead(), then, is a measure of how long it took to charge the capacitor.

So, the regular analogRead() function discharges the capacitor, measures the charge time, and returns a value. The fast analogRead function still needs to measure the charge time. So, the answer to the question of when does it take the sample is "while".