<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CODARE &#187; Eduardo Habkost</title>
	<atom:link href="http://codare.net/author/ehabkost/feed/" rel="self" type="application/rss+xml" />
	<link>http://codare.net</link>
	<description>Programadores, uni-vos!</description>
	<lastBuildDate>Fri, 03 Dec 2010 21:34:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Limpar caches de disco e de filesystem no Linux</title>
		<link>http://codare.net/2006/12/04/limpar-caches-de-disco-e-de-filesystem-no-linux/</link>
		<comments>http://codare.net/2006/12/04/limpar-caches-de-disco-e-de-filesystem-no-linux/#comments</comments>
		<pubDate>Mon, 04 Dec 2006 20:44:22 +0000</pubDate>
		<dc:creator>Eduardo Habkost</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://codare.wordpress.com/2006/12/04/limpar-caches-de-disco-e-de-filesystem-no-linux/</guid>
		<description><![CDATA[Palavras-chave: linux, cache, buffers, limpeza, memória, carregamento, disco, filesystem O Linux mantém em memória os dados recentemente carregados do disco, e ali eles ficam enquanto possível. Isso acelera o processo de carregamento destes mesmos dados no futuro, como na execução &#8230; <a href="http://codare.net/2006/12/04/limpar-caches-de-disco-e-de-filesystem-no-linux/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: linux, cache, buffers, limpeza, memória, carregamento, disco, filesystem</p>
<p>O Linux mantém em memória os dados recentemente carregados do disco, e ali eles ficam enquanto possível. Isso acelera o processo de carregamento destes mesmos dados no futuro, como na execução de programas e leitura de arquivos.</p>
<p>As áreas na memória que carregam esses dados chamam-se <em>caches</em>. Você pode notar os caches em ação quando roda um programa pela segunda vez e ele carrega muito mais rapidamente que na primeira.</p>
<p>Mas às vezes é necessário fazer algum teste onde esse efeito de cache deve ser anulado, por exemplo, medir tempo de carregamento de um programa, ou o tempo necessário para processar algum arquivo. Já vi gente reiniciando a máquina só para poder ter uma medição confiável no tempo de carregamento de um programa.</p>
<p>Para economizar nosso tempo e paciência, e ter um efeito semelhante sem precisar reiniciar a máquina, podemos pedir ao kernel que limpe todos os caches que estiverem em memória. Basta usar uma entrada no <code>/proc</code>, existente nas versões mais recentes do kernel, rodando o comando:</p>
<pre>
echo 1 &gt; /proc/sys/vm/drop_caches
</pre>
]]></content:encoded>
			<wfw:commentRss>http://codare.net/2006/12/04/limpar-caches-de-disco-e-de-filesystem-no-linux/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>C: Performance: uso eficiente da memória cache</title>
		<link>http://codare.net/2006/09/21/c-performance-uso-eficiente-da-memoria-cache/</link>
		<comments>http://codare.net/2006/09/21/c-performance-uso-eficiente-da-memoria-cache/#comments</comments>
		<pubDate>Thu, 21 Sep 2006 03:56:24 +0000</pubDate>
		<dc:creator>Eduardo Habkost</dc:creator>
				<category><![CDATA[C]]></category>

		<guid isPermaLink="false">http://codare.wordpress.com/2006/09/21/uso-eficiente-cache/</guid>
		<description><![CDATA[Palavras-chave: C, memória, cache, performance, velocidade Todo processador hoje em dia possui memória cache, que ajuda a melhorar a performance, armazenando os dados mais recentemente acessados, para acesso mais rápido pelo processador. O que nós freqüentemente ignoramos é que a &#8230; <a href="http://codare.net/2006/09/21/c-performance-uso-eficiente-da-memoria-cache/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Palavras-chave: C, memória, cache, performance, velocidade</p>
<p>Todo processador hoje em dia possui memória <em>cache</em>, que ajuda a melhorar a performance, armazenando os dados mais recentemente acessados, para acesso mais rápido pelo processador.</p>
<p>O que nós freqüentemente ignoramos é que a organização dos dados e o padrão de acesso à memória podem aproveitar muito bem ou simplesmente estragar a ajuda que a cache nos dá.</p>
<p>Vamos comparar duas versões de um programa que soma os elementos de uma matriz, e seus tempos de execução:</p>
<pre>
/* matriz1 */
#define N 10000
#define M 15000

static int m[N][M];

int main()
{
    int i, j, soma = 0;
    <strong>for (j = 0; j &lt; M; j++) /* coluna a coluna */</strong>
        <strong>for (i = 0; i &lt; N; i++)</strong>
            soma += m[i][j];
    return 0;
}
</pre>
<pre>
/* matriz2 */
#define N 10000
#define M 15000

static int m[N][M];

int main()
{
    int i, j, soma = 0;
    <strong>for (i = 0; i &lt; N; i++) /* linha a linha */</strong>
        <strong>for (j = 0; j &lt; M; j++)</strong>
            soma += m[i][j];
    return 0;
}
</pre>
<pre>
$ time -p ./matriz1
real 1.44
user 1.38
sys 0.05
</pre>
<pre>
$ time -p ./matriz2
real 0.78
user 0.72
sys 0.05
</pre>
<p>Conseguimos quase cortar pela metade o tempo de execução (de 1,38 para 0,72 segundos), apenas modificando a ordem em que os elementos da matriz são acessados. No segundo caso, os dados são acessados linha a linha (seqüencialmente na memória), aproveitando que blocos de memória contendo elementos vizinhos já foram carregados na memória cache.</p>
]]></content:encoded>
			<wfw:commentRss>http://codare.net/2006/09/21/c-performance-uso-eficiente-da-memoria-cache/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

