<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Otimização fina de código</title>
	<atom:link href="http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/feed/" rel="self" type="application/rss+xml" />
	<link>http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/</link>
	<description></description>
	<lastBuildDate>Fri, 25 Nov 2011 22:30:00 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
	<item>
		<title>By: Ricardo</title>
		<link>http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/comment-page-1/#comment-203</link>
		<dc:creator>Ricardo</dc:creator>
		<pubDate>Tue, 24 Jun 2008 06:14:26 +0000</pubDate>
		<guid isPermaLink="false">http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/#comment-203</guid>
		<description>&lt;p&gt;Hi, hoje em dia o primeiro código pode ser bem mais rápido que o segundo. Se você tiver uma cpu moderna e um compilador moderno, o primeiro if pode ser compilado para um opcode cmov, que não tem branch e nem segura a pipeline. O segundo código tem uma trilha muito longa de dependência de dados, então o código com cmov acaba sendo mais amigável pra cpus com out-of-order execution.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hi, hoje em dia o primeiro código pode ser bem mais rápido que o segundo. Se você tiver uma cpu moderna e um compilador moderno, o primeiro if pode ser compilado para um opcode cmov, que não tem branch e nem segura a pipeline. O segundo código tem uma trilha muito longa de dependência de dados, então o código com cmov acaba sendo mais amigável pra cpus com out-of-order execution.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Leonardo Garcia</title>
		<link>http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/comment-page-1/#comment-196</link>
		<dc:creator>Leonardo Garcia</dc:creator>
		<pubDate>Wed, 12 Dec 2007 10:37:52 +0000</pubDate>
		<guid isPermaLink="false">http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/#comment-196</guid>
		<description>&lt;p&gt;Ótimo exemplo, Bruno! :)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Ótimo exemplo, Bruno! <img src='http://log4dev.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
	<item>
		<title>By: Bruno</title>
		<link>http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/comment-page-1/#comment-190</link>
		<dc:creator>Bruno</dc:creator>
		<pubDate>Wed, 12 Dec 2007 00:02:31 +0000</pubDate>
		<guid isPermaLink="false">http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/#comment-190</guid>
		<description>&lt;p&gt;Phil, a vida é muito curta,  &lt;a href=&quot;http://log4dev.com/2007/09/27/viva-a-diversidade/&quot; rel=&quot;nofollow&quot;&gt;solta o verbo!!!&lt;/a&gt; :)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Phil, a vida é muito curta,  <a href="http://log4dev.com/2007/09/27/viva-a-diversidade/" rel="nofollow">solta o verbo!!!</a> <img src='http://log4dev.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
	<item>
		<title>By: Phil Souza</title>
		<link>http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/comment-page-1/#comment-191</link>
		<dc:creator>Phil Souza</dc:creator>
		<pubDate>Tue, 11 Dec 2007 18:10:12 +0000</pubDate>
		<guid isPermaLink="false">http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/#comment-191</guid>
		<description>&lt;p&gt;Sem problemas Leonardo, foi mais uma brincadeira que em si algo sério, mas os assuntos nos comentários ficou mais que resolvido me parece. Nada acrescentar :D
Abraços!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Sem problemas Leonardo, foi mais uma brincadeira que em si algo sério, mas os assuntos nos comentários ficou mais que resolvido me parece. Nada acrescentar <img src='http://log4dev.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> 
Abraços!</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Leonardo Garcia</title>
		<link>http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/comment-page-1/#comment-195</link>
		<dc:creator>Leonardo Garcia</dc:creator>
		<pubDate>Tue, 11 Dec 2007 00:38:46 +0000</pubDate>
		<guid isPermaLink="false">http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/#comment-195</guid>
		<description>&lt;p&gt;Phil,&lt;/p&gt;

&lt;p&gt;Não sei quem disse a frase &quot;é melhor ficar calado e acharem que você é um idiota do que você falar e terem certeza...&quot; mas já a escutei várias vezes e conheço várias pessoas que ficam intimidadas por esta idéia.&lt;/p&gt;

&lt;p&gt;Mas, na minha opinião, a gente tem sempre que se espressar. É claro que devemos pensar antes de falar porque senão pode sair só besteira mesmo e ai a coisa fica muito feia. Mas se não nos espressamos e falarmos o que pensamos não há possibilidade de nos corrigirmos. Aliás, também não existe possibilidade de influenciarmos os outros e de construírmos idéias novas a partir dos diferentes pontos de vista que só são possíveis devido às diferenças de visão de mundo de cada pessoa.&lt;/p&gt;

&lt;p&gt;Não quero forçar-lhe a falar. Acho que temos que fazer aquilo que nos é confortável. Mas da minha parte mesmo você provavelmente sempre ouvirá eu falar ( (quase sempre) depois de pensar no que eu vou falar). Aliás, neste blog mesmo, o primeiro artigo que eu escrevi (que pode ser lido em http://log4dev.com/2006/08/17/redes-e-o-futuro-da-computacao/) foi refutado. E não vi problema nenhum sobre isso. Não parei de escrever. Continuei, com a certeza de que só através de conversas e discussões que o mundo evolui.&lt;/p&gt;

&lt;p&gt;Um abraço,&lt;/p&gt;

&lt;p&gt;Leonardo Garcia&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Phil,</p>

<p>Não sei quem disse a frase &#8220;é melhor ficar calado e acharem que você é um idiota do que você falar e terem certeza&#8230;&#8221; mas já a escutei várias vezes e conheço várias pessoas que ficam intimidadas por esta idéia.</p>

<p>Mas, na minha opinião, a gente tem sempre que se espressar. É claro que devemos pensar antes de falar porque senão pode sair só besteira mesmo e ai a coisa fica muito feia. Mas se não nos espressamos e falarmos o que pensamos não há possibilidade de nos corrigirmos. Aliás, também não existe possibilidade de influenciarmos os outros e de construírmos idéias novas a partir dos diferentes pontos de vista que só são possíveis devido às diferenças de visão de mundo de cada pessoa.</p>

<p>Não quero forçar-lhe a falar. Acho que temos que fazer aquilo que nos é confortável. Mas da minha parte mesmo você provavelmente sempre ouvirá eu falar ( (quase sempre) depois de pensar no que eu vou falar). Aliás, neste blog mesmo, o primeiro artigo que eu escrevi (que pode ser lido em <a href="http://log4dev.com/2006/08/17/redes-e-o-futuro-da-computacao/" rel="nofollow">http://log4dev.com/2006/08/17/redes-e-o-futuro-da-computacao/</a>) foi refutado. E não vi problema nenhum sobre isso. Não parei de escrever. Continuei, com a certeza de que só através de conversas e discussões que o mundo evolui.</p>

<p>Um abraço,</p>

<p>Leonardo Garcia</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Phil Souza</title>
		<link>http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/comment-page-1/#comment-197</link>
		<dc:creator>Phil Souza</dc:creator>
		<pubDate>Mon, 10 Dec 2007 22:40:07 +0000</pubDate>
		<guid isPermaLink="false">http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/#comment-197</guid>
		<description>&lt;p&gt;Bom post. Gerou uma discussão interessante, mas minha vida como programador ainda é muito nova (não, eu entendi tudo aqui), mas prefiro não comentar e depois falar besteira...&lt;/p&gt;

&lt;p&gt;Como dizem &quot;é melhor ficar calado e acharem que você é um idiota do que você falar e terem certeza...&quot;&lt;/p&gt;

&lt;p&gt;Bom, já falei :D&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Bom post. Gerou uma discussão interessante, mas minha vida como programador ainda é muito nova (não, eu entendi tudo aqui), mas prefiro não comentar e depois falar besteira&#8230;</p>

<p>Como dizem &#8220;é melhor ficar calado e acharem que você é um idiota do que você falar e terem certeza&#8230;&#8221;</p>

<p>Bom, já falei <img src='http://log4dev.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
	<item>
		<title>By: Bruno</title>
		<link>http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/comment-page-1/#comment-192</link>
		<dc:creator>Bruno</dc:creator>
		<pubDate>Sat, 08 Dec 2007 23:35:37 +0000</pubDate>
		<guid isPermaLink="false">http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/#comment-192</guid>
		<description>&lt;p&gt;L. Garcia,&lt;/p&gt;

&lt;p&gt;Acho que você já tinha deixado isto bem claro no post, foi mais para enfatizar &lt;em&gt;um pouco&lt;/em&gt; mais ;)&lt;/p&gt;

&lt;p&gt;[ ]&#039;s!!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>L. Garcia,</p>

<p>Acho que você já tinha deixado isto bem claro no post, foi mais para enfatizar <em>um pouco</em> mais <img src='http://log4dev.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<p>[ ]&#8216;s!!</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Leonardo Garcia</title>
		<link>http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/comment-page-1/#comment-193</link>
		<dc:creator>Leonardo Garcia</dc:creator>
		<pubDate>Sat, 08 Dec 2007 18:50:04 +0000</pubDate>
		<guid isPermaLink="false">http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/#comment-193</guid>
		<description>&lt;p&gt;Bruno,&lt;/p&gt;

&lt;p&gt;Concordo com você! E é por isso que eu dei o meu exemplo em uma classe bem específica de problemas: algoritmos criptográficos.&lt;/p&gt;

&lt;p&gt;Nesta classe de problemas eficiência é muito mais importante que legibilidade de código. Quer um exemplo: OpenSSL, a biblioteca de criptografia mais usada no mundo. Se você ler, por exemplo, a especificação do AES, o algoritmo é relativamente simples de entender. Pegue a implementação do AES no OpenSSL porém e veja que existe uma diferença relativamente grande entre o que está na especificação e o que foi implementado.&lt;/p&gt;

&lt;p&gt;Como você bem disse, é o tipo de coisa que ninguém vai querer num sistema que irá entrar em produção em algumas horas ou que precise de manutenção constante. Mas em aplicações que rodam em ambientes não muito favoráveis como os algoritmos criptográficos ou os microcontroladores citados pelo Leandro Lameiro acima, estes truques ilegíveis muitas vezes são as únicas saídas.&lt;/p&gt;

&lt;p&gt;Um abraço,&lt;/p&gt;

&lt;p&gt;Leonardo Garcia&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Bruno,</p>

<p>Concordo com você! E é por isso que eu dei o meu exemplo em uma classe bem específica de problemas: algoritmos criptográficos.</p>

<p>Nesta classe de problemas eficiência é muito mais importante que legibilidade de código. Quer um exemplo: OpenSSL, a biblioteca de criptografia mais usada no mundo. Se você ler, por exemplo, a especificação do AES, o algoritmo é relativamente simples de entender. Pegue a implementação do AES no OpenSSL porém e veja que existe uma diferença relativamente grande entre o que está na especificação e o que foi implementado.</p>

<p>Como você bem disse, é o tipo de coisa que ninguém vai querer num sistema que irá entrar em produção em algumas horas ou que precise de manutenção constante. Mas em aplicações que rodam em ambientes não muito favoráveis como os algoritmos criptográficos ou os microcontroladores citados pelo Leandro Lameiro acima, estes truques ilegíveis muitas vezes são as únicas saídas.</p>

<p>Um abraço,</p>

<p>Leonardo Garcia</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Bruno</title>
		<link>http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/comment-page-1/#comment-194</link>
		<dc:creator>Bruno</dc:creator>
		<pubDate>Sat, 08 Dec 2007 17:12:11 +0000</pubDate>
		<guid isPermaLink="false">http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/#comment-194</guid>
		<description>&lt;p&gt;Domingo, 3AM, o sistema entra em produção daqui algumas horas. Como diferenciar os statements abaixo?&lt;/p&gt;

&lt;p&gt;r ^= b &amp; (-((a &amp; 0x80) &gt;&gt; 0x7));
r ^= b &amp; ((-(a &amp; 0x80) &gt;&gt;  07));
r &#124;= r &amp; ((-(b &amp; 0x08) &gt;&gt;   7));
r &#124;= b &amp; ((-(a &amp; 0x80) &lt;&gt; 0x7));
r &#124;= r &amp; ((-(a &amp; 0x80) &gt;&gt;   7));
r ^= b &amp; (-((a &amp; 0x08) &lt;&gt;   7));
r ^= r &amp; (-((b &amp; 0x08) &lt;&lt; 0x7));&lt;/p&gt;

&lt;p&gt;Para sacrificar a legibilidade de maneira tão atroz só com provas irrefutáveis da necessidade do código acima ;-)&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Domingo, 3AM, o sistema entra em produção daqui algumas horas. Como diferenciar os statements abaixo?</p>

<p>r ^= b &amp; (-((a &amp; 0&#215;80) &gt;&gt; 0&#215;7));
r ^= b &amp; ((-(a &amp; 0&#215;80) &gt;&gt;  07));
r |= r &amp; ((-(b &amp; 0&#215;08) &gt;&gt;   7));
r |= b &amp; ((-(a &amp; 0&#215;80) &lt;&gt; 0&#215;7));
r |= r &amp; ((-(a &amp; 0&#215;80) &gt;&gt;   7));
r ^= b &amp; (-((a &amp; 0&#215;08) &lt;&gt;   7));
r ^= r &amp; (-((b &amp; 0&#215;08) &lt;&lt; 0&#215;7));</p>

<p>Para sacrificar a legibilidade de maneira tão atroz só com provas irrefutáveis da necessidade do código acima <img src='http://log4dev.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>]]></content:encoded>
	</item>
	<item>
		<title>By: Leonardo Garcia</title>
		<link>http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/comment-page-1/#comment-198</link>
		<dc:creator>Leonardo Garcia</dc:creator>
		<pubDate>Sat, 08 Dec 2007 10:28:41 +0000</pubDate>
		<guid isPermaLink="false">http://log4dev.com/2007/12/07/otimizacao-fina-de-codigo/#comment-198</guid>
		<description>&lt;p&gt;Eita Lullis! hehehehe....&lt;/p&gt;

&lt;p&gt;Tava esperando sua resposta à minha provocação. :P&lt;/p&gt;

&lt;p&gt;E tenho que adimitir: uma coisa é uma coisa, outra coisa é outra coisa. Só peguei duas frases suas da mesma discussão mas em contexto diferentes e olha que que eu fiz :)&lt;/p&gt;

&lt;p&gt;De qualquer forma, acho que foi um bom gancho para meu argumento. :)&lt;/p&gt;

&lt;p&gt;Um abraço,&lt;/p&gt;

&lt;p&gt;Leonardo Garcia&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Eita Lullis! hehehehe&#8230;.</p>

<p>Tava esperando sua resposta à minha provocação. <img src='http://log4dev.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>

<p>E tenho que adimitir: uma coisa é uma coisa, outra coisa é outra coisa. Só peguei duas frases suas da mesma discussão mas em contexto diferentes e olha que que eu fiz <img src='http://log4dev.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p>De qualquer forma, acho que foi um bom gancho para meu argumento. <img src='http://log4dev.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p>Um abraço,</p>

<p>Leonardo Garcia</p>]]></content:encoded>
	</item>
</channel>
</rss>

