That said I was doing some filtering of the results (average of 5 reads)
like this?
sum = 0;
for (int i=0; i< 5; i++) sum += fastAnalogRead();
val = sum/5;
better average 4 readings, the division will be a shift 2
sum = 0;
for (int i=0; i< 4; i++) sum += fastAnalogRead();
val = sum >> 2;
quite faster than division by 5
Or did you do something like this? (sort of running average)
val = 0;
for (int i=0; i< 5; i++) val = (val + fastAnalogRead()) /2;