BT

Novidades O InfoQ vem desenvolvendo uma série de novas funcionalidades para melhorar sua experiência com o site. Confira!

Ruby Performance Roundup: Ruby 1.9.1 Performance no Mundo Real, GC vs EventMachine, Ruby Compiler

| por Werner Schuster , traduzido por Ricardo Almeida em 21 mai 2009. Tempo estimado de leitura: 1 minuto |

Um argumento para usar Ruby 1.9.1 é o aumento significante de performance. Um novo resultado de benchmark vem do mundo real, aplicações existentes e pit 1.8.x, JRuby e 1.9.1 contra cada um dos outros:

Nós portamos Acunote - nosso sistema de gerenciamento de projeto online e o software Scrum, ambos JRuby e Ruby 1.9, e rodamos nossos conjunto de benchmark de performance.

Ruby 1.9.1 e JRuby ambos fornecem melhoras significantes ao 1.8.6, com 1.9.1 na liderança do JRuby, apesar de algumas discussões no comentário sobre maneiras de melhorar a performance do JRuby com alguns flags em linhas de comando.

Melhoras na performance no 1.9.1 não chegam somente de uma VM mais rápida, mas também de algumas novas funcionalidades. Muhammed Ali mostra como escalar uma aplicação web usando Fibers do Ruby 1.9.1. Por outro lado, Muhammed também comentou um questão com vazamento de memória no Object#extend no 1.9.1.

Entretanto, 1.8.6 é ainda a única opção para alguns projetos, devido a algumas bibliotecas perdidas no 1.9.1. Por causa disso, existe muito interesse na correção de alguns estrangulamentos no 1.8.6. Joe Damato foi investigar algumas das questões em seu blog. Por exemplo, ele investigou a história por trás do --enable-pthread e porque desativar essa configuração trás 30% de ganho na performance. Em outro artigo, Joe e Aman Gupta investigaram o problema com o Ruby GC - e veio com um pequeno patch que corrige alguns problemas com o GC e EventMachine:

* Acelera a GC em 2 a 3 vezes por causa da enorme diminuição no tamanho da pilha do frame.
* Corrige um bug aberto na EventMachine onde usa threads com Epoll que causa muita lentidão. A razão é que cada thread vai herdar aproximadamente 800,000 bytes de pilha que é copiado nele e fora toda troca de contexto.
* Isso resulta em um aumento de 500 requests/segundo a 7000 requests/segundo quando usa Sinatra+Thin+Epoll+Threads. Isso é muito mal.

Finalmente, Viktor Hokstad escreveu uma serie em compilando Ruby já a algum tempo. Um artigo recente fala sobre algum desses problemas em fazer Ruby mais rápido e possíveis otimizações.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT