<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: Aplicações web nativas - por que não?</title>
	<atom:link href="http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/</link>
	<description>Deliver yesterday, code today, think tomorrow.</description>
	<pubDate>Wed, 10 Mar 2010 00:28:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: Anselmo Alves</title>
		<link>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/#comment-26</link>
		<dc:creator>Anselmo Alves</dc:creator>
		<pubDate>Fri, 13 Jun 2008 02:23:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.anselmoalves.com/?p=3#comment-26</guid>
		<description>“Um algorítmo? Qual algorítmo? Existem toneladas de exemplos de algorítmos com implementações de semelhante complexidade que vão rodar mais que 2x mais rápido em uma linguagem gerenciada que em C/C++.”

Ah...entendi agora. Você quer dizer "vão rodar", no sentido de "um dia vão rodar". Pois é...talvez.</description>
		<content:encoded><![CDATA[<p>“Um algorítmo? Qual algorítmo? Existem toneladas de exemplos de algorítmos com implementações de semelhante complexidade que vão rodar mais que 2x mais rápido em uma linguagem gerenciada que em C/C++.”</p>
<p>Ah&#8230;entendi agora. Você quer dizer &#8220;vão rodar&#8221;, no sentido de &#8220;um dia vão rodar&#8221;. Pois é&#8230;talvez.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anselmo Alves</title>
		<link>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/#comment-25</link>
		<dc:creator>Anselmo Alves</dc:creator>
		<pubDate>Fri, 13 Jun 2008 02:07:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.anselmoalves.com/?p=3#comment-25</guid>
		<description>"Vinte ms é irrelevante para um sistema web."

Temos pontos de vista bem diferentes.

"Um algorítmo? Qual algorítmo? Existem toneladas de exemplos de algorítmos com implementações de semelhante complexidade que vão rodar mais que 2x mais rápido em uma linguagem gerenciada que em C/C++."

Sem comentários.</description>
		<content:encoded><![CDATA[<p>&#8220;Vinte ms é irrelevante para um sistema web.&#8221;</p>
<p>Temos pontos de vista bem diferentes.</p>
<p>&#8220;Um algorítmo? Qual algorítmo? Existem toneladas de exemplos de algorítmos com implementações de semelhante complexidade que vão rodar mais que 2x mais rápido em uma linguagem gerenciada que em C/C++.&#8221;</p>
<p>Sem comentários.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rodrigo Kumpera</title>
		<link>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/#comment-24</link>
		<dc:creator>Rodrigo Kumpera</dc:creator>
		<pubDate>Thu, 12 Jun 2008 23:58:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.anselmoalves.com/?p=3#comment-24</guid>
		<description>"Vinte milissegundos é muito tempo, considerando este tempo para vários usuários. Veja o quanto me preocupo com isso neste meu outro post: http://blog.globoi.com/webmedia/2007/10/03/meta-plugin/"

Vinte ms é irrelevante para um sistema web. A home do G1 demora 500ms para ser entregue aqui (tempo entre o primeiro e o último pacote apenas). Meu ponto foi que para o usuário a performance extra na vai se converter em uma aplicação com tempo de resposta melhor.

"Não disse isto. Antes, apenas afirmei que um algoritmo compilado no gcc, com otimização do compilador ligada, roda mais rápido do que o mesmo algoritmo implementado em Java rodando em uma JVM. Isto significa que com as ferramentas atuais, C é mais rápido."

Um algorítmo? Qual algorítmo? Existem toneladas de exemplos de algorítmos com implementações de semelhante complexidade que vão rodar mais que 2x mais rápido em uma linguagem gerenciada que em C/C++.</description>
		<content:encoded><![CDATA[<p>&#8220;Vinte milissegundos é muito tempo, considerando este tempo para vários usuários. Veja o quanto me preocupo com isso neste meu outro post: <a href="http://blog.globoi.com/webmedia/2007/10/03/meta-plugin/" rel="nofollow">http://blog.globoi.com/webmedia/2007/10/03/meta-plugin/</a>&#8221;</p>
<p>Vinte ms é irrelevante para um sistema web. A home do G1 demora 500ms para ser entregue aqui (tempo entre o primeiro e o último pacote apenas). Meu ponto foi que para o usuário a performance extra na vai se converter em uma aplicação com tempo de resposta melhor.</p>
<p>&#8220;Não disse isto. Antes, apenas afirmei que um algoritmo compilado no gcc, com otimização do compilador ligada, roda mais rápido do que o mesmo algoritmo implementado em Java rodando em uma JVM. Isto significa que com as ferramentas atuais, C é mais rápido.&#8221;</p>
<p>Um algorítmo? Qual algorítmo? Existem toneladas de exemplos de algorítmos com implementações de semelhante complexidade que vão rodar mais que 2x mais rápido em uma linguagem gerenciada que em C/C++.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anselmo Alves</title>
		<link>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/#comment-23</link>
		<dc:creator>Anselmo Alves</dc:creator>
		<pubDate>Thu, 12 Jun 2008 15:04:10 +0000</pubDate>
		<guid isPermaLink="false">http://www.anselmoalves.com/?p=3#comment-23</guid>
		<description>"Acho que essa questão é equivalente a “Por que não escrever uma engine 3D com shell script?”. Por simplesmente não fazer o menor sentido. Por não fazer a menor diferença."

Claro que faz diferença! Shell script é muito lento...

"Uma aplicação web passa a maior parte do tempo lidando com latência da rede. O banco de dados e o sistema de arquivos vão continuar sendo lentos da mesma maneira seja com Ruby ou C++. Uma requisição web vai continuar gastando mais de 100ms-300ms entre estabelecer a conexão, enviar a requisição e transmitir a resposta."

Concordo.

"Para começar, o usuário final iria sentir quase nenhuma melhora. Se com Python leva 20ms para processar a requisição e em com C++ leva 0ms. A melhora vai ser de de 17% indo de 120ms para 100ms o tempo de resposta."

Vinte milissegundos é muito tempo, considerando este tempo para vários usuários. Veja o quanto me preocupo com isso neste meu outro post: http://blog.globoi.com/webmedia/2007/10/03/meta-plugin/

"Continuando, o maior gargalo é a rede e contra isso usar C++ não vai melhorar em nada. Uma webapp feita com mod_perl consegue saturar uma placa gigabit de um servidor razoável (4 cores) se esta não tiver nenhum ponto de espera - tal qual um SGDB.

Quem dita escalabilidade de um sistema é sua arquitetura. Coisas como se usa um cache distribuído, mensageria assíncrona, sharding, particionamento, etc. Porém esse tipo de decisão é agnóstica a linguagem de programação utilizada."

Concordo. Disse isso no post, inclusive.

"Moral da história, usar C++ não compra quase nenhuma vantagem em relação a linguagens gerenciadas e dinâmicas. Com desvantagens, não esqueçamos, como produtividade muito inferior, deployment complicado, troubleshooting muito mais complexo e por ai vai."

Bom, aí, como eu já disse, depende do peopleware.

"Só para concluir, nenhuma pessoa em sã consciencia que trabalha com compiladores ou máquinas virtuais diria que compilação estática produz resultados melhores que compilação em tempo de execução. É mais provado e comprovado que um JIT produz código mais rápido. Isso vale para linguagens gerenciadas e não gerenciadas como C ou C++."

Não disse isto. Antes, apenas afirmei que um algoritmo compilado no gcc, com otimização do compilador ligada, roda mais rápido do que o mesmo algoritmo implementado em Java rodando em uma JVM. Isto significa que com as ferramentas atuais, C é mais rápido.</description>
		<content:encoded><![CDATA[<p>&#8220;Acho que essa questão é equivalente a “Por que não escrever uma engine 3D com shell script?”. Por simplesmente não fazer o menor sentido. Por não fazer a menor diferença.&#8221;</p>
<p>Claro que faz diferença! Shell script é muito lento&#8230;</p>
<p>&#8220;Uma aplicação web passa a maior parte do tempo lidando com latência da rede. O banco de dados e o sistema de arquivos vão continuar sendo lentos da mesma maneira seja com Ruby ou C++. Uma requisição web vai continuar gastando mais de 100ms-300ms entre estabelecer a conexão, enviar a requisição e transmitir a resposta.&#8221;</p>
<p>Concordo.</p>
<p>&#8220;Para começar, o usuário final iria sentir quase nenhuma melhora. Se com Python leva 20ms para processar a requisição e em com C++ leva 0ms. A melhora vai ser de de 17% indo de 120ms para 100ms o tempo de resposta.&#8221;</p>
<p>Vinte milissegundos é muito tempo, considerando este tempo para vários usuários. Veja o quanto me preocupo com isso neste meu outro post: <a href="http://blog.globoi.com/webmedia/2007/10/03/meta-plugin/" rel="nofollow">http://blog.globoi.com/webmedia/2007/10/03/meta-plugin/</a></p>
<p>&#8220;Continuando, o maior gargalo é a rede e contra isso usar C++ não vai melhorar em nada. Uma webapp feita com mod_perl consegue saturar uma placa gigabit de um servidor razoável (4 cores) se esta não tiver nenhum ponto de espera - tal qual um SGDB.</p>
<p>Quem dita escalabilidade de um sistema é sua arquitetura. Coisas como se usa um cache distribuído, mensageria assíncrona, sharding, particionamento, etc. Porém esse tipo de decisão é agnóstica a linguagem de programação utilizada.&#8221;</p>
<p>Concordo. Disse isso no post, inclusive.</p>
<p>&#8220;Moral da história, usar C++ não compra quase nenhuma vantagem em relação a linguagens gerenciadas e dinâmicas. Com desvantagens, não esqueçamos, como produtividade muito inferior, deployment complicado, troubleshooting muito mais complexo e por ai vai.&#8221;</p>
<p>Bom, aí, como eu já disse, depende do peopleware.</p>
<p>&#8220;Só para concluir, nenhuma pessoa em sã consciencia que trabalha com compiladores ou máquinas virtuais diria que compilação estática produz resultados melhores que compilação em tempo de execução. É mais provado e comprovado que um JIT produz código mais rápido. Isso vale para linguagens gerenciadas e não gerenciadas como C ou C++.&#8221;</p>
<p>Não disse isto. Antes, apenas afirmei que um algoritmo compilado no gcc, com otimização do compilador ligada, roda mais rápido do que o mesmo algoritmo implementado em Java rodando em uma JVM. Isto significa que com as ferramentas atuais, C é mais rápido.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rodrigo Kumpera</title>
		<link>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/#comment-22</link>
		<dc:creator>Rodrigo Kumpera</dc:creator>
		<pubDate>Thu, 12 Jun 2008 04:50:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.anselmoalves.com/?p=3#comment-22</guid>
		<description>Acho que essa questão é equivalente a "Por que não escrever uma engine 3D com shell script?". Por simplesmente não fazer o menor sentido. Por não fazer a menor diferença. 


Uma aplicação web passa a maior parte do tempo lidando com latência da rede. O banco de dados e o sistema de arquivos vão continuar sendo lentos da mesma maneira seja com Ruby ou C++. Uma requisição web vai continuar gastando mais de 100ms-300ms entre estabelecer a conexão, enviar a requisição e transmitir a resposta.

Para começar, o usuário final iria sentir quase nenhuma melhora. Se com Python leva 20ms para processar a requisição e em com C++ leva 0ms. A melhora vai ser de de 17% indo de 120ms para 100ms o tempo de resposta.

Continuando, o maior gargalo é a rede e contra isso usar C++ não vai melhorar em nada. Uma webapp feita com mod_perl consegue saturar uma placa gigabit de um servidor razoável (4 cores) se esta não tiver nenhum ponto de espera - tal qual um SGDB.

Quem dita escalabilidade de um sistema é sua arquitetura. Coisas como se usa um cache distribuído, mensageria assíncrona, sharding, particionamento, etc. Porém esse tipo de decisão é agnóstica a linguagem de programação utilizada.

Moral da história, usar C++ não compra quase nenhuma vantagem em relação a linguagens gerenciadas e dinâmicas. Com desvantagens, não esqueçamos, como produtividade muito inferior, deployment complicado, troubleshooting muito mais complexo e por ai vai.

Só para concluir, nenhuma pessoa em sã consciencia que trabalha com compiladores ou máquinas virtuais diria que compilação estática produz resultados melhores que compilação em tempo de execução. É mais provado e comprovado que um JIT produz código mais rápido. Isso vale para linguagens gerenciadas e não gerenciadas como C ou C++.</description>
		<content:encoded><![CDATA[<p>Acho que essa questão é equivalente a &#8220;Por que não escrever uma engine 3D com shell script?&#8221;. Por simplesmente não fazer o menor sentido. Por não fazer a menor diferença. </p>
<p>Uma aplicação web passa a maior parte do tempo lidando com latência da rede. O banco de dados e o sistema de arquivos vão continuar sendo lentos da mesma maneira seja com Ruby ou C++. Uma requisição web vai continuar gastando mais de 100ms-300ms entre estabelecer a conexão, enviar a requisição e transmitir a resposta.</p>
<p>Para começar, o usuário final iria sentir quase nenhuma melhora. Se com Python leva 20ms para processar a requisição e em com C++ leva 0ms. A melhora vai ser de de 17% indo de 120ms para 100ms o tempo de resposta.</p>
<p>Continuando, o maior gargalo é a rede e contra isso usar C++ não vai melhorar em nada. Uma webapp feita com mod_perl consegue saturar uma placa gigabit de um servidor razoável (4 cores) se esta não tiver nenhum ponto de espera - tal qual um SGDB.</p>
<p>Quem dita escalabilidade de um sistema é sua arquitetura. Coisas como se usa um cache distribuído, mensageria assíncrona, sharding, particionamento, etc. Porém esse tipo de decisão é agnóstica a linguagem de programação utilizada.</p>
<p>Moral da história, usar C++ não compra quase nenhuma vantagem em relação a linguagens gerenciadas e dinâmicas. Com desvantagens, não esqueçamos, como produtividade muito inferior, deployment complicado, troubleshooting muito mais complexo e por ai vai.</p>
<p>Só para concluir, nenhuma pessoa em sã consciencia que trabalha com compiladores ou máquinas virtuais diria que compilação estática produz resultados melhores que compilação em tempo de execução. É mais provado e comprovado que um JIT produz código mais rápido. Isso vale para linguagens gerenciadas e não gerenciadas como C ou C++.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anselmo Alves</title>
		<link>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/#comment-21</link>
		<dc:creator>Anselmo Alves</dc:creator>
		<pubDate>Tue, 10 Jun 2008 10:06:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.anselmoalves.com/?p=3#comment-21</guid>
		<description>Fabio, já vi Java ser tão rápido quanto C, por exemplo, por conta do JIT da JVM. Era um pequeno programinha, que fazia um determinado tipo de operação. Isto mostra claramente que o tempo de execução de um programa em uma VM, dependendo do tipo de operações que se faça, pode ser comparável ao tempo de execução de um programa nativo. Porém, em várias operações, o C se mostra mais rápido. Equacionando isso, programas nativos ainda são mais rápidos.</description>
		<content:encoded><![CDATA[<p>Fabio, já vi Java ser tão rápido quanto C, por exemplo, por conta do JIT da JVM. Era um pequeno programinha, que fazia um determinado tipo de operação. Isto mostra claramente que o tempo de execução de um programa em uma VM, dependendo do tipo de operações que se faça, pode ser comparável ao tempo de execução de um programa nativo. Porém, em várias operações, o C se mostra mais rápido. Equacionando isso, programas nativos ainda são mais rápidos.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fabio Kung</title>
		<link>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/#comment-20</link>
		<dc:creator>Fabio Kung</dc:creator>
		<pubDate>Tue, 10 Jun 2008 04:26:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.anselmoalves.com/?p=3#comment-20</guid>
		<description>Cuidado quando acha que aplicações compiladas nativamente são mais rápidas que as que rodam em uma VM. Daqui a pouco aparece o louds por aqui para te crucificar! ;-)

Para aplicações que rodam por tempo suficiente, como costuma ser o caso das que rodam num servidor, os bons GCs e JIT Compilers começam a brilhar e deixar aplicações gerenciadas até mais rápidas que as compiladas nativamente em muitos casos.

Compilação nativa usa heurística para muita coisa. O JIT Compiler não precisa de heurística.</description>
		<content:encoded><![CDATA[<p>Cuidado quando acha que aplicações compiladas nativamente são mais rápidas que as que rodam em uma VM. Daqui a pouco aparece o louds por aqui para te crucificar! <img src='http://www.anselmoalves.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Para aplicações que rodam por tempo suficiente, como costuma ser o caso das que rodam num servidor, os bons GCs e JIT Compilers começam a brilhar e deixar aplicações gerenciadas até mais rápidas que as compiladas nativamente em muitos casos.</p>
<p>Compilação nativa usa heurística para muita coisa. O JIT Compiler não precisa de heurística.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anselmo Alves</title>
		<link>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/#comment-18</link>
		<dc:creator>Anselmo Alves</dc:creator>
		<pubDate>Mon, 09 Jun 2008 16:45:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.anselmoalves.com/?p=3#comment-18</guid>
		<description>Concordo. É necessário um time muito especializado e um bom motivo.</description>
		<content:encoded><![CDATA[<p>Concordo. É necessário um time muito especializado e um bom motivo.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Phillip Calçado "Shoes"</title>
		<link>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/#comment-17</link>
		<dc:creator>Phillip Calçado "Shoes"</dc:creator>
		<pubDate>Mon, 09 Jun 2008 14:43:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.anselmoalves.com/?p=3#comment-17</guid>
		<description>Existem diversos estudos de produtividade em ambientes gerenciados x nativos. Independete da maneira como são aferidos acho que você concorda comigo que é geralmente mais rápido implementar algo numa linguagem gerenciada, onde boa parte do hardware e recursos estão abstraídos.</description>
		<content:encoded><![CDATA[<p>Existem diversos estudos de produtividade em ambientes gerenciados x nativos. Independete da maneira como são aferidos acho que você concorda comigo que é geralmente mais rápido implementar algo numa linguagem gerenciada, onde boa parte do hardware e recursos estão abstraídos.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anselmo Alves</title>
		<link>http://www.anselmoalves.com/2008/06/06/aplicacoes-web-nativas/#comment-16</link>
		<dc:creator>Anselmo Alves</dc:creator>
		<pubDate>Mon, 09 Jun 2008 14:25:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.anselmoalves.com/?p=3#comment-16</guid>
		<description>Isso dá um outro post.</description>
		<content:encoded><![CDATA[<p>Isso dá um outro post.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
