JornalJava

Sobre Java, o Universo e Tudo Mais

Javascript não é Lento, Você é Lento!

Posted by LucioCamilo 8 Comments

Este é um daqueles posts de “não coloque a culpa na linguagem”. Por mais que você ache que determinada linguagem é lenta para alguma coisa, tenha sempre uma certeza: Você está errado! Sempre existirá alguém que sabe otimizar o procedimento que você reclama que está lento.
Já ví várias e várias vezes alguém reclamando de alguma função ou procedimento que era muito lento, e na verdade a culpa é quase sempre de quem fez.

A primeira coisa que se aprende em um curso de tunning programacional é de que qualquer procedimento pode ser otimizado.

Como muitas pessoas reclamam que Javascript é lento, coloquei as apresentações abaixo para provar que javascript não é nem um pouco lento. As apresentações mostram formas de tornar seu código mais performático, através de exemplos e situações bem avançadas.

A segunda apresentação mostra algumas regrinhas de ouro para ter um javascript otimizado com as melhores práticas de performance.

Posts Relacionados:

Tag:

8 Responses so far.

  1. Rodrigo Saraiva says:

    Performático é uma palavra aplicada a apresentações artísticas. É erroneamente usada em TI para indicar performace (desempenho)

    • fulvius says:

      dá um desconto. o cara q escreveu é meio artista plastico e tal, descolore o cabelo.

      E sem sacanagem, já vi nego da IBM e SUN em apresentação falar isso sem crise. Mas espero q isso não tenha gerado confusão.

    • LucioCamilo says:

      Rodrigo, não é a primeira vez que ouço ou utilizo esta palavra no sentido errado. Obrigado pela informação, sem ela continuaria utilizando. Vivendo e aprendendo! Abraços

  2. Fernando says:

    E eu que achava que o desempenho do Javascript dependia da engine usada pelo browser.
    Que burro eu.

  3. Leonardo L. says:

    “Tunning programacional”? Hahaha, essa é ótima.

    A linguagem pode ser sim uma barreira para a otimização, especialmente se ela limita sua capacidade de abstrair significados, expressar idéias, ou representar estruturas de dados de forma diferente.

    Otimização precária do compilador/interpretador também é outro problema muito comum, e muitas vezes está ligado a uma linguagem com semântica inconsistente, ou extremamente não-determinística, que impede ou dificulta a realização de otimizações importantes.

    Leonardo

    • LucioCamilo says:

      Não entendi o motivo do riso, porém se você não entendeu eu explico, utilizei a palavra “tunning programacional” como forma de generalizar qualquer curso sobre tunning de linguagens de programação.
      Você está falando de dois assuntos diferentes, existe a otimização do código e a otimização de implementações. No caso do artigo estavamos tratando apenas de otimização do código. Se quiser ver mais sobre otimização de implementação, http://en.wikipedia.org/wiki/Benchmark_%28computing%29 . Abraços

      • Leonardo L. says:

        Lucio,

        Já temos a palavra “otimização” para tratar do assunto. Aliás, eu evitaria dessa expressão “tuning programacional” para ninguém confundir com reprogramação de injeção eletrônica de automóveis, que é a primeira coisa que me vem à mente. A risada foi para o “curso de tuning programacional”, que foi realmente hilário.

        Sobre o link que você passou.. bom, primeiro, “código” e “implementação” não tem distinção teórica nenhuma para o que estamos falando. Segundo, “benchmarks” podem até servir como uma FERRAMENTA, mas para CRITÉRIO DE OTIMIZAÇÃO se usa COMPLEXIDADE DE ALGORITMOS.

        É importante considerar também que um artigo meia-boca da Wikipédia não é uma fonte confiável ou precisa de informações, nem de longe – ainda mais pela mensagem “please add citations to this article” no topo da página.

        Para otimização, é essencial que seu ALGORITMO esteja otimizado (com complexidade “X”, seja em processamento ou até mesmo uso de memória, ou estiver dentro do tempo de resposta mínimo, ou qualquer outra coisa que for necessária para a aplicação), AÍ você vai tentar extrair alguma coisa a mais das funções mais utilizadas, otimizando procedimentos.

        Nesta etapa, benchmarks podem ajudar, mas jamais ser a sua base “teórica”.

        O problema é que, em alguns caso, a linguagem restringe o que você pode fazer, e é EXATAMENTE o que eu disse antes: se você tiver um reduzido poder de abstrair e representar os seus dados, vários tipos de otimização são impraticáveis ou IMPOSSÍVEIS, a não ser que altere a definição da linguagem.

        Sempre lembrando que não adianta nada pular a parte do algoritmo e tentar otimizar absurdamente uma função específica se o algoritmo está ineficiente – é como lavar louça usando banha de porco: a sujeira até sai, mas nunca vai ficar limpo que chega.

        Por fim, atente ao fato que este artigo fala EXPLICITAMENTE que QUALQUER linguagem é rápida o suficiente PARA QUALQUER COISA, especialmente quando diz que você SEMPRE está errado quando pensa o contrário. Eu consigo pensar em diversas aplicações que contradizem essa afirmação, como comunicação direta com portas de I/O e DMA de processadores embutidos, problemas de busca lógica (usando máquina de inferência), entre outros. A minha sugestão é reescrever essa frase para representar o que você quis dizer, realmente.

        Não me entenda mal, isso não é nenhum “ataque pessoal”, ninguém nasce sabendo nada e nem tem posse da informação, mas o que está escrito aqui está – no mínimo – equivocado. O que estou fazendo é alertar você e os leitores sobre alguns equívocos.

        E, por enquanto, é isso.

        • Paco Queruak says:

          Oh, boy…

          1. é uma pena vc não estar no mercado tempo suficiente para saber que tuning é um termo FREQUENTEMENTE usado qdo se trata de appServers e DBs.
          Confira:

          http://www.redbooks.ibm.com/abstracts/redp4285.html

          http://www.redbooks.ibm.com/abstracts/sg245511.html

          http://www.amazon.com/Oracle-SQL-High-Performance-Tuning-Harrison/dp/0136142311

          Quer mais? http://j.mp/dZ5pnX

          ou seja, update or die!

          2. “este artigo fala EXPLICITAMENTE que QUALQUER linguagem é rápida o suficiente PARA QUALQUER COISA”… mostre isso descrito no artigo e ganhe um IPAD imaginário! Ou seja, pare de inventar coisas ou vá se tratar de esquizofrenia.

          3. o que eu entendi(como qualquer pessoa razoavelmente inteligente), é que o artigo fala que vc pode otimizar seu código js através de pequenas dicas de tuning. Just This. Isso é feito igualmente no java qdo um determinado metodo pode ser declarado estático (ao invés de necessitar instanciar a classe), ganhando quase 5x de performance com esse pequeno tuning programático.

          4. Cara, vc inventou uma coisa na sua cabeça e saiu de javascript para gargalo de IO, DMA e busca lógica… wtf, que confusão! get a life, man!

          5. Seja humilde e entenda que não é pq vc acha q está certo vc estará certo.

          Encerro meu caso!


  • RSS
  • Delicious
  • Digg
  • Facebook
  • Twitter
  • Linkedin
  • Youtube

Popular Posts

Quer Ganhar um Livro

Para aqueles que estão acompanhando o lançamento do SO Android ...

Java x C# - Chega!!!

Estou cansado de ver comparações entre linguagens na internet, e ...

Promoção: Ganhe um

Apesar do Natal já ter passado, o JornalJava continua trazendo ...

A História da Revol

Muito se fala sobre a revolução digital e a criação ...

Mantenha seu Código

Um problema comum em quase todas as profissões que podem ...

Switch to our mobile site