Textos categorizados 'performance'

Programação: CSS Child Selector Performance

Utilizando jQuery, sempre quando quero pegar algumas classes ou ids, eu sempre dou quase o caminho DOM completo do que quero.

$('div#destaque div#categoria ul li.first')

Para quê? Simples, pelo motivo de ficar bem organizado, de eu prevenir que caso tenha outro elemento utilizando a mesma classe não dê problemas. :)

Lendo hoje no Ajaxian, me deparei com isto: CSS Child Selector Performance

No artigo, Jim Barraud chegou a conclusão que selecionar os nós tem maior performance, tanto que fez uma sequência de testes e chegou na seguinte tabela:

Performance CSS

Claro que são inconclusivos realmente os testes, mas já é uma boa base para começar a desenvolver uma boa programação, informando sempre o máximo do caminho possível. ;)

jQuery and Prototype Benchmarks

Prototype é um ótimo framework de desenvolvimento javascript, cheio de funções para simplificar muitas coisas que tinhamos que fazer via javascript, o que em minha opinião revolucionou este quesito de desenvolvimento.Desenvolvi 1 ano em cima do Prototype, para mim não existia algo melhor.

Um belo dia descobri o jQuery, que pregava o conceito “The Write Less, Do more”, ou seja, com poucas linhas de comando eu podia fazer grandes coisas com ele. Ele pregava um conceito de “acorrentamento” (Chainability), que era o grande diferencial dele. Com um pouco de receio, aos poucos comecei a usar ele, esquecendo tudo que sabia já sobre o Prototype .

Mas sempre ficou algo na cabeça: “Qual dos dois é melhor? Qual tem mais performance?”

Ai veio o Piotr Solnica, do blog “s0lnic on blog” fez uma série de posts sobre este assunto, baseado na nova versão do Prototype (1.6.0) que saiu recetemente.

Veja aqui um exemplo de uso dos dois frameworks:

// Jquery
$(’a.primeiro’).addClass(’marcado’);
//Prototype
$$(’a.primeiro’).each(function(link){
link.addClassName(’marcado’);
})
//Outro caminho pelo Prototype
$$(’a.primeiro’).invoke(’addClassName’, ‘marcado’);


O exemplo acima resolve a seguinte situação: “Quero adicionar uma classe para todos os links que tiverem a classe “primeiro”. Pelo jQuery como podem ver é simples, ele simplesmente adiciona em todos o que encontrar a classe primeiro, já o Prototype tem que se fazer uma iteração pelo encontrado a solução dois você tem que invocar um método do Prototype para adicionar a tal classe.

Algo interessante que eu vejo de diferença nos dois é que enquanto o jQuery devolve o que você quer em forma de objeto, o Prototype devolve em objeto DOM mesmo, apenas extendendo com algumas funcionalidades. Já no jQuery eu tenho que sempre declarar o seletor em cima do elemento que eu quero, o que torna meio chato.

Piotr chegou a conclusão que em questões de performance, o Prototype se destaca e muito em relação ao jQuery (principalmente pela diferença citada acima), escrevendo a seguinte conclusão:

Prototype was at least 2 times faster then jQuery in 15 cases, and jQuery was faster then Prototype in 8 cases. What library should I choose? In my case I will stick with Prototype, because it offers the same functionality as jQuery does + more and it’s faster. jQuery is probably better for projects where there’s a need for some fancy UI effects and that’s it, but it’s just an assumption, correct me if I’m wrong…

Em minha opinião eu ainda fico com o jQuery, pelo o que eu posso fazer com poucas linhas de código, deixando a manutenção fácil, já performance é relativo dependendo muito de máquina para máquina.

Caso querem acompanhar até um teste bacana de velocidade (não se beaseiem nele): http://www.domassistant.com/slickspeed/ (Prototype tomou uma surra nele aqui no meu pc).

Enfim, o que eu recomendo é: “Entrem no site de cada um, veja uns demos, olhem a sintaxe e a documentação e decidam qual utilizar” ;)

Para lerem os artigos do s0lnic: s0lnic on blog

Inspirado no post do Ajaxian