BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias O que há de errado com a Net::HTTP do Ruby?

O que há de errado com a Net::HTTP do Ruby?

Favoritos

"O que pode estar errado com o a implementação Net:HTTP do Ruby?", você poderia perguntar. Adam Nelson foi surpreendido pelo que ele viu em uma aplicação que transfere enormes quantidades de dados."O que realmente acontece é que a CPU redlines, e o dado é transferido em blocos de 1024 bytes.", Adam descobriu em sua primeira análise. O verdadeiro problema é que "isto põe um timeout em torno de cada única chamada rbuf_fill," escreve Alex Young, "então por padrão tem de lançar uma nova thread para cada 1K de dados recebidos".

Uma comparação entre diferentes implementações de diferentes bibliotecas Ruby e Ruby 1.8.6 mostraram que utilizam "duas vezes mais o uso da CPU enquanto o concorrente mais próximo", que é Ruby 1.8.7, que aparentemente usa um buffer maior (16K). Curiosamente, Ruby 1.9.0 tem o menor uso da CPU, que uma implementação que utiliza readpartial, "sem timeout para leitura de socket" e "String buffer pré-alocados para cada leitura ". Logo atrás está a RFuzz, uma implementação Ruby baseada no núcleo Mongrel por Zed Shaw.

Esta questão não é nova, em uma thread no ruby-talk mailinglist datada de 2006 jáse discutia o problema e alguns workarounds para evitá-lo.

Além disso, isto é também um bom exemplo de quão útil e valioso implementações open source podem ser.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT