The Vanilla Javascript way you posted is the fastest. It will be faster than the jQuery solution you posted (See my comment on the question). If you’re not removing or adding anything to the DOM in your loop and order of traversal doesn’t matter, you can also speed it up ever so slightly by iterating in reverse:
var items = startElem.getElementsByTagName("*");
for (var i = items.length; i--;) {
//do stuff
}
Edit: check this benchmark to see how much time you can save by using the native code: http://jsben.ch/#/Ro9H6