In a way you are correct, but let me try to explain a little better. A wavefrom containing 4000 gear teeth (100 revs), sampled at 30000 pionts per rev comes into the loop. The outer loop has a pulse measurement vi in it, the loop iteration determines the pulse to measure, (i.e first iteration reads pulse #1, second iteration reads pulse #2 etc.), next I have to get the rising edge time and the faling edge time for each pulse(use transition vi for this), to do this I nested another for loop, the iterations are set to 2. I take the outer loop iteration for the pulse number for the transition block inside the nested for loop, and I use the inner iteration for the rising then the falling edge of that pulse(0 then 1). All of this data is auto indexed out of the loops to arrays that gather the information. Inside these loops I do nothing else (i.e. write to controls, indicators, graphs etc.). I mean the answer may be as simple as the fact that the vi's I am using are inherently that slow (if I just do 1 revolution which equals 40 teeth it takes 250 msec to complete, multiply that out to 4000 and you get 16 minutes or so). Now if I just take one pulse and bring it into the loop it runs the 4000 iterations almost instantly. It seems the problem lies with the fact that I am looking at a pulse train with 4000 peaks which have to be counted through each loop iteration to find the right pulse to measure, I just cannot see a way to run one pulse through at a time without using some sort of loop that has to look at the entire pulse train therefor slowing everything down. Maybe that makes a little more sense. Thank you for your time in answering my question.