BTW we keep all our points in memory in a hash table also. Disk access is a no no, especially when we are targeting a GPU (eventually).
Can you explain why don't you keep the points on disk, and keep them only in memory? And also please tell which point you keep - every point, or just some multipliers of predefined number (let's say 10^10)?