Pourquoi est-jQuery $(“td:eq(0)”) plus lent que $(“td”).eq(0)

Je suis à l'aide de jQuery 1.7.1 et j'essaie de trouver pourquoi le code suivant 4600 MS, si je change le :eq(0) à :first c'est le même résultat.

$("tr:eq(0) td"); //x10000 takes 4600ms
$("tr").eq(0).find("td"); //x10000 takes 470ms

La deuxième codes est près de 10 fois plus vite! Et c'est seulement écrit différemment.

Aussi si j'utilise un sélecteur souhaitez, il vous suffit de sélectionner un ID ou à la recherche au sein d'un nœud:

someparent.find("#test") //x10000 takes 500ms
$("#test") //x10000 takes 100ms
$("div#test") //x10000 takes 470ms

Je dirais, si je passe un div#test serait plus rapide que #test mais il est 5 fois plus lent. Pourquoi?

J'ai fait toutes les courses une couple de fois et il est vrai lent si je fais la même chose de différent.

Pourquoi utiliser le sélecteur plus lent à l'aide de fonctions?

Quel navigateur et la version?
Firefox 8.0, je suis actuellement à l'aide, mais j'attends qu'il prend plus de temps dans tous les navigateurs.

OriginalL'auteur Niels | 2011-12-06