Inércia Sensorial

2007-04-28

O paradigma de programação afeta a performance de aplicativos Web?

Filed under: Programação — inerte @ 17:19

Rafael de Camillis, desenvolvedor do Garimpar, envou uma interessante pergunta à lista brasileira no Google Groups do Django:

Pessoal queria saber o que vcs acham, o que é melhor pra programação web: Procedural ou Orientação à Objeto.

Um site todo procedural tem a mesma performance de um site feito com Orientação a Objeto?

Minha resposta à pergunta dele estava ficando kilométrica e decidi colocar aqui no blog. Segue a dita cuja!

A performance é independente do paradigma usado para fazer o programa. O que acontece é que certas técnicas em certas linguagens de programação são mais eficientes dependendo dos requerimentos.

Por exemplo, a programação funcional é teoricamente ótima para processadores com mais de um núcleo, entretanto você provavelmente só verá ganhos enormes quando você estiver utilizando uma linguagem que faça esse lado funcional de maneira “pura“. É possível programar de maneira funcional em Lisp e Python, mas devido à características da linguagem, você não verá os mesmos ganhos que em Haskell ou Erlang.

C++, por exemplo, provavelmente vai ser uma das linguagens onde você vai conseguir maiores velocidades, independentemente do paradigma utilizado e contra quais linguagens. Procedural ou OOP, C++ bate Java em 99.99% das vezes, se feita direito.

Ah, mas então a pergunta é, dentro da mesma linguagem (vamos assumir Python), qual é mais rápido, Procedural ou OOP? Novamente, tudo depende 🙂 Em Python, tudo é um objeto, então qualquer coisa que saia de código a gente poderia dizer que já é OOP. Mas aí entra o estilo do programador, a competência dele. Felizmente, ou infelizmente, esse é o principal fator. Imaginemos que conseguíssemos chegar à solução que determinado algoritmo (perceba o escopo do problema, é micro, e não macro como _todo_ o desenvolvimento Web) é mais rápido quando feito de forma Procedural. Se déssemos o problema para ser solucionado por N programadores, divididos entre uso de técnicas procedural e OOP, a verdade é que a performance das soluções dependeria da competência das pessoas. Poderia muito bem sair o OOP como vencedor.

De qualquer jeito, deixe-me voltar ao foco 🙂 Os gargalos de performance em aplicativos web raramente estão na linguagem de programação utilizada (tirando aplicar aberrações como Cobol :), mas sim, na ordem:

1) Banco de dados;
2) Servidor de páginas;
3) Erros de programação;

Isso acontece pois é relativamente fácil resolver problemas de escalabilidade em aplicativos web. Quando a linguagem é lerda, geralmente basta jogar mais uma máquina com uma instância do servidor web para distribuir as requisições. Na verdade, esse lerdeza é geralmente irrisória se comparada às outras linguagens, e irrelevante levando em conta outras soluções. É possível decuplicar a performance fazendo cache das páginas dinâmicas. Duplicar dobrando a memória RAM do servidor. Triplicar separando o banco de dados do servidor web em uma máquina exclusiva.

Essa mensagem não pretende exemplificar quais procedimentos você poderia tomar para aumentar a performance nos três pontos que eu passei, mas a verdade é que umas das últimas de suas preocupações deve ser qual linguagem de programação utilizar para aplicativos web, e menos ainda qual paradigma ou técnica utilizar. Não se preocupe com isso, e ataque o problema de outra maneira.

Se alguém quiser, eu posso fazer um novo post dando uma visão geral sobre como melhorar a performance de aplicativos web.

3 Comments »

  1. Ola amigo,

    concordo com o que disse a respeito de performace.

    Acho a vantagem do uso de OO na web ao invés de Procedural seja principalmente o reaproveitamento de codigo, e também considero mais “rapido” o desenvolvimento. Em sistemas complexos, onde usamos muitas funções e repetidamente, é prático usar OO exetamante por isso, não reescrever muitas vezes codigos semelhantes. Além de padronizar e organizar o codigo. Bom, essa é a minha opnião…

    Belo post!
    Abraço.

    Comment by Diogo kid — 2007-04-29 @ 00:49

  2. Olá Julio!

    Muito boa a matéria sanou minhas dúvidas, e a respeito da materia de como melhorar a performance de aplicativos web ficarei muito feliz se você publicar uma materia a respeito.

    ps: sou seu fan leio com frequencia os posts do seu site sao muito bons abraços e continue escrevendo!

    Rafael de Camillis
    Programador Garimpar.com

    Comment by Rafael De Camillis — 2007-05-01 @ 03:42

  3. Tô escrevendo! Vai demorar pra caceta pois tem muito coisa pra falar, mas uma hora sai, eu te aviso por email.

    Comment by inerte — 2007-05-03 @ 16:02

RSS feed for comments on this post. TrackBack URL

Leave a comment

You must be logged in to post a comment.

Powered by WordPress