Well, the only thing I can assume of why repeat is slower than while is the fact that repeat has an extra step of counting all the items at once before running the process each time, where the while loop sets each item to ssname and doesn't have to count at all, just take note of when T becomes nil. Also, while removes a step from repeat because of the setting of ssname to its test function. Depending on how much work it has to do, I'd think that the speed would vary. Try this test. Set up your routine with say 50 items, then with 100 items, then with 1000 items and see what the variations of the speed are. What I think should be seen is that the more items you have, the further apart the times get from each other. The more tests run, should produce an interesting time graph.
Note: If my memory serves, the above test could be skewed by the slowing of code used repetitively. You might check to see if the times change on the same number of objects using multiple passes and possibly take into account the time differential.