Well, without a wait (e.g. a few ms), the loop runs as fast as possible and the speed will be different on different computers. At the same time, the program will consume all CPU time. With a small wait statement, the program will run at the same rate on any computer and the cpu useage will be only a few % (all other programs will thank you ;))
The autoindexing shift register must accumulate the array data. If this programs runs for 30 minutes at full speed, this could be gigagbytes worth of data. Growing large arrays incrementally in a a program is very expensive, because memory needs to be reallocated whenever the size grows beyond the initial estimate for the final size.
You could e.g. initialize an array with a thousand points (for example) and keep it in a shift register, then add each real data point using "replace array subset" at each loop iteration. Every thousand iteration, you write the array to file (using append) and start over at the first element in the next iteration.