I think this functionality is solely dependant on the capabilities of the "wireless tools" package. Check "man iwlist", look under "scan[ning]", then the answer is in the last line (at least my version): "Also, this command is supposed to take extra arguments to control the scanning behaviour, but this is currently not implemented".
With an Atheros cards and (currently) 3 AP's in range I get:
Code:
time iwlist ath0 scan >/dev/null
real 0m0.251s
user 0m0.000s
sys 0m0.000s
...which doesn't seem that slow to me.