Recentemente, atualizei minha versão do IDE do PHPStorm e agora ele me avisa sobre o uso ineficiente do jQuery.
Por exemplo:
var property_single_location = $("#property [data-role='content'] .container");
Solicita este aviso:
Verifica se os seletores jQuery são usados de maneira eficiente. Ele sugere dividir os seletores descendentes que são prefaciados com o seletor de ID e avisa sobre seletores duplicados que podem ser armazenados em cache.
Então, minha pergunta é:
Por que isso é ineficiente e qual é a maneira eficiente de fazer o seletor acima?
Eu acho que em:
var property_single_location = $("#property").find("[data-role='content']").find(".container");
Este é o caminho certo?
Eu acredito que a diferença entre os dois métodos ao usar versões recentes de jQuery e navegadores é insignificante. Construí um teste que mostra que agora é na verdade 10% mais rápido fazer um seletor combinado em vez de selecionar no id e encontrar um caso muito simples:
http://jsperf.com/jquery-find-vs-insel
Para a seleção de vários filhos por classe em qualquer profundidade, o "encontrar" parece ser mais rápido:
http://jsperf.com/jquery-find-vs-insel/7
Houve alguma discussão sobre isso nos fóruns da jQuery, mas tem 3 anos: https://forum.jquery.com/topic/which-jquery-selection-is-efficient Como eles apontam aqui, se você está fazendo muito operações no mesmo seletor de id, a maior melhoria de desempenho é encontrada armazenando em cache o elemento de nível superior. Por outro lado, se você estiver fazendo apenas algumas seleções, não haverá praticamente nenhuma diferença de desempenho.
Portanto, acredito que o IntelliJ está exagerando a importância desse estilo de código.
fonte
A primeira pergunta é clicar em Alt + Enter, selecionar a primeira dica na lista e, em seguida, clicar em Enter, você verá o que acha mais eficiente.
fonte