Custo Computacional
Por: Amanda Botelho • 17/5/2016 • Trabalho acadêmico • 1.934 Palavras (8 Páginas) • 852 Visualizações
- Introdução
É cada vez maior e mais ágil o avanço tecnológico, principalmente no que se diz respeito a aparelhos eletrônicos.Com este avanço crescente de tecnologia, vem também a busca da eficiência operacional destes aparelhos. Desempenho, capacidade de armazenamento são uns dos fatores mais visados neste desenvolvimento tecnológico. Desse modo, um intento dos profissionais responsáveis pela elaboração dos sistemas operacionais é ter seus sistemas com maior desempenho e menor custo possível. Neste contexto, a busca pela otimização de programas computacionais, tem papel fundamental em todo este processo, desde o levantamento de dados até a execução dos projetos. O movimento de otimização não consiste simplesmente em racionalizar tudo que está relacionado com o processo produtivo, mas sim em planejar e executar ações para eliminar das atividades àquelas que não agregam valor ao produto final, utilizando-se dos melhores direcionadores de custos e resultados para tal.
O presente trabalho, tem como objetivo analisar o custo computacional para inversão matrizes quadradas de diferentes dimensões (m=10, 100, ...). Para a avaliação deste custo, deve-se sempre levar em consideração a quantidade de recursos utilizados e a quantidade de tempo. Para tal, serão avaliados o tempo de execução necessário para inversão de matrizes, assim como o espaço de memória RAM ocupado.
Para a elaboração e execução do trabalho, foi utilizada a ferramenta computacional MATLAB® versão 2008.É válido lembrar que, para o tipo de análise aqui realizada, o desempenho do computador tem influência no resultado final. O ambiente físico em que o algoritmo está sendo testado é um computador Intel® Core™ i5-4200U, 1.60GHz. Possuindo 8 GB de memória, com sistema operacional de 64bits.
- Metodologia
Com o auxílio do MATLAB®, foi desenvolvido um algoritmo para inversão de matrizes quadradas de diferentes dimensões, onde foi calculado e armazenado o tempo demandado para tal operação. A priori, as ordens das matrizes foram definidas como pontos espaçados logaritmicamente entre décadas, com início em 10 até 100.000. Os valores dos pontos das matrizes, foram definidos aleatoriamente, pelo comando rand disponível no MATLAB®. E para a inversão destas, também foi utilizado um comando disponível no MATLAB®, inv(Matriz).
Como o objetivo principal do trabalho, é análise do custo computacional gasta para a inversão de matrizes quadradas, foi utilizado contadores de tempo, como: tic-toc, cputime e clock. Onde, tic-toc irá estimar quanto tempo uma parte do programa leva para executar. O tic é chamado antes de onde se deseja cronometrar, e toc é chamado depois, em seguida, toc irá imprimir o tempo wallclock decorrido. O cputime e clock, foram utilizados mais como título de curiosidade, já que não são viáveis para este tipo de medição. O cputime retorna o tempo de cpu em segundos. Isto representa a quantidade de tempo de computador "utilizada" pelo algoritmo, e pode ser um pouco menos do que o tempo wallclock decorrido. A função clock retorna a data ymd/hms como um vetor de seis inteiros. Dois valores de clock são subtraídos, e a diferença, ou tempo wallclock decorrido é dado em segundos, pela função etime.
Para cada dimensão de matriz quadrada foram realizados 10 ensaios e no final foi apresentado o tempo médio de execução. Tal processo, demanda um grande tempo de simulação, o que opõe-se aos princípios básicos dos programas otimizados. Porém, tal cálculo apresenta resultados mais confiáveis, pois são mais próximos da realidade.
Ao final do programa, quando se obteve todos os tempos, foram utilizadas as funções whos e memory, que apresentam os tamanhos dos dados gerados, assim como os Bytes gastos no seu armazenamento na memória e exibe informações mostrando o quanto de memória está disponível e quanto o software MATLAB ® está usando atualmente, respectivamente. Também, foi utilizado a função profile, que monitora a execução de um cálculo e fornece um relatório de desempenho, tais dados serão apresentados como anexo.
- Resultados
Primeiramente, serão demonstrados os resultados finais obtidos, na sequência, serão explicados os passos realizados para se obter tal resultado.
Para verificar o desempenho e custo do algoritmo, foram realizados testes e os valores dos tempos necessário para a inversão das matrizes foram armazenados como mostra a Tabela 1.
Tabela 1: Tempo demando para inversão de matrizes (mxm).
Dimensão da Matriz (mxm) | Tempo de inversão (s) | ||
TIC-TOC | CPUTIMER | CLOCK | |
10 | 0.0001 | ||
50 | 0.0006 | ||
100 | 0.0028 | ||
500 | 0.0963 | ||
1000 | 0.4697 | ||
5000 | 20.5211 | ||
10000 | 154.3802 |
Em relação aos tempos obtidos, com o tic-toc; cputime e clock, observa-se que eles apresentam as mesmas características. Assim, os dados apresentados a seguir, valem para todos os cronômetros utilizados, porém, os resultados apresentados ao longo o trabalho será referente ao tic-toc, os demais videm anexo.
Os dados de armazenamento de memória, foram obtidos pelo comando whos.
[pic 1]Figura 1: Dados de armazenamento na memória.
A Figura 1, mostra as variáveis utilizadas no algoritmo, bem como seu tamanho e tipo de variável. Foram considerados apenas as variáveis utilizadas na inversão das matrizes, que são As variáveis de maior interesse.
...