We're acquiring very large data sets, using 'Cont Acq&Graph (buffered).vi' as sort of a template for the data acquisition.
The resulting files are much larger than physical RAM, but the researchers are only interested in small parts of the collected data: The researchers need to be able to go back over the data run, choose a few seconds here and there for permanent archiving, and then discard the rest of the data.
Because the size of the data run is larger than the physical RAM in the computer, the 'viewing and extracting' VI can read from file and display to screen [via a Waveform chart] only a few seconds of data at a time. Because hard drive access time is so much slower than RAM access time, I'd like to buffer this data view
[just a little to the left and a little to the right], so that if the researcher chooses to move a little bit back in time, or a little bit forward in time, the data will [probably] be cached in RAM and the VI won't have to make a relatively slow call to disk.
Of course, the art of buffering rapidly degenerates into a PhD level computer science mess [owing to not necessarily contiguous runs of not necessarily ordered data], and I really don't feel like writing a buffering algorithm from the ground up [especially not in a visual language like LabView].
I was hoping maybe the Waveform Chart might have some capability to perform [not necessarily contiguous and not necessarily ordered] buffering. Does anyone know if this is possible, or am I asking for too much?
Or should I just rely on the operating system [soft caching] and/or the disk controller/disk [hard caching] to perform my buffering [caching] for me?
Or do the standard LabView byte stream disk reading VIs perform thei
r own [not necessarily contiguous, not necessarily ordered] buffering?"