1) Stocker bien sur, la recherche sur le DOM est très lente.
2) La taille à une importance relativement faible, pour gagner en place, sur la production, tu peux compresser en faisant appel par exemple à uglifyjs. Ca permet de transférer moins d'octet (donc chargement de la page plus rapide), et la performance reste a peu près au même niveau (c'est souvent négligeable comme différence).
3) Si tu souhaites vraiment aller au bout de choses, sache qu'un langage interprété est performant... Lorsqu'il se comporte comme un language compilé.
En particulier, lorsque les variables ne changent pas de type, le retour des fonctions non plus, c'est dans ces cas là que la performance sera maximale.
4) Tu peux faire un tour du côté des profilers (celui de chrome, de firefox) pour voir un bout de code "en live" ce qu'il donne, quelles fonctions sont a optimisées au non.
Have fun.