If you want the fastest response to changes in Analog Output values, then you'll want to disable Regeneration so that the USB buffer isn't filled with repeated data that has to be read before your changes can be read.
Thus, the most optimal solution is going to be:
- Having the Start task and Stop task VI outside the while loop
- Non regeneration configured for the task
- No on-board buffer use
As such, this would be the optimal (albeit bare-bones) solution for changing an Analog Output with changing output values: See image below
Note: You are able to use the on-board buffer with a DAQmx channel property, however it does not serve the purpose of optimizing loop speed.
If you have the Use Only On-board Memory set on the DAQmx channel property, then it is not allowed to update the buffer while it is running, thus requiring the Start task and Stop task VI inside the while loop. See image below.
But the answer is that this will not speed up your code and shouldn't be used unless you know what you are doing. Moving the start and stop tasks inside the while loop is counterproductive if the goal is to speed up the execution time as the start and stop tasks are resource-intensive.
Keeping the Start and Stop tasks outside the while loop optimizes the speed of the code more significantly than any benefit offered by using the on-board buffer.