Logo Hardware.com.br
ripongao
ripongao Veterano Registrado
755 Mensagens 94 Curtidas

Otimização em C++/Assembly - Testes de desempenho

#1 Por ripongao 25/10/2012 - 11:47
Sempre gostei de averiguar sobre tempos e ciclos de clock em determinadas funções em meus programas, tenha em mente que sou apenas um programador esporádico; antigamente eu usava programas profiles para medição, até aprender que processadores não tão recentes possuem registros de desempenho (MSR).
Bom, para tal, tive que me aprofundar sobre como usar este recurso, já que não é acessível a nível usuário (ring3).
Comecei a procurar sobre como otimizar códigos e obtive êxito no escopo programação.
Enfim, sem delongas:
Lí um artigo muito interessante de um professor com indubitável índole sobre o tema, e ele cita sobre compiladores intel.
Em resumo, se determinado programa foi criado usando-se o compilador intel, e o mesmo for executado em processadores não intel, então funções contidas nas bibliotecas são alteradas, digo, usa-se outra função de menor performance no lugar da pretendida.
Infelizmente, e em vão, pesquisei sobre os compiladores usados nos programas para se realizar testes de desempenho assim como os programas sendo medidos em questão e nenhum deles cita qual foi usado. O que dá suposta margem ao erro dos testes de desempenho de vários sites de renomes nacionais e internacionais.
Segue o link do autor abaixo, porém no idioma inglês. (espero não estar desacatando regras do fórum ao postar um link com conteúdo em outro idioma, por obséquio postem, acatarei e não repetirei o fato).
http://www.agner.org/optimize/blog/read.php?i=49

Aproveitando a deixa, segue o link do site do autor na área de programação C++, porém não tenho certeza se o é permitido devido ao fato de estar em outro idioma. No site do mesmo existem textos e códigos/programas únicos, excelente para programadores avançados em c++ e assembly, que desejam aprender a medir suas rotinas e consequentemente otimizá-las.
http://www.agner.org/optimize/
abraços.
DCNunes
DCNunes General de Pijama Registrado
1.8K Mensagens 404 Curtidas
#2 Por DCNunes
29/10/2012 - 19:45
Legal o seu interesse nesse tipo de assunto. Há uns anos eu também tinha, mas fui perdendo aos poucos. Na época eu queria ter à minha disposição uma liguagem de programação que desse mais poder ao programador, na questão de desempenho. Eu nunca gostei da maioria das linguagens que estudei por isso, mas não sei se hoje em dia essas mesmas linguagens de alto nível possuem algum recurso para ajudar o programador a programar com operações SIMD.

Quanto a essa cachorrada da Intel, eu não sabia.
ripongao
ripongao Veterano Registrado
755 Mensagens 94 Curtidas
#3 Por ripongao
30/10/2012 - 11:10
Boas senhor DCNunes;
eu não sei se as de alto nível oferecem alguma forma para se fazer uso de tais instruções, o mínimo que pesquisei me levou a ver pontos flutuantes, ou ainda, creio que se usar matrizes ou vetores, não faço idéia realmente. Eu programo em baixo nível apenas, aprendí sozinho e é a única que sei. Creio que alguns desenvolvedores removeram o suporte ao 'inline asm' dos seus compiladores.

A intenção do link foi justamente compartilhar, dificilmente se acha uma pessoa dizendo sobre, e lançando seus materiais de forma gratuita através da net. Pedí permissão ao autor para compartilhar o link, e ele deixou, desde que ao invés de copiar o texto para um repositório, postasse o link para a página dele, pois o é atualizado de tempos em tempos.
Fiz os testes de uma função que o autor disponibilizou, strlen(), peguei um texto meio gigante e calculei o tempo gasto para se executar a função, a diferença de tempo gasto realmente é notável. Usei a strlen incluida nas bibliotecas dos S.O. win e lin, assim como as do C como comparativo. Depois, tentei por eu mesmo fazer uma mais rápida, e consegui, mas percebí a visão do autor rapidamente, ele objetivou vários processadores, e não apenas o que eu uso que foi o que objetivei. Tenho como referência sempre aquele autor.

Quanto ao compilador, bem sinistro né, isso influi em testes benchmarks, e leva pessoas a escolher determinado processador consequentemente.
abraços.
Desliguei-me do fórum. Conta canelada.
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal