Custo Computacional
Por: Juliana2017 • 13/2/2018 • 1.796 Palavras (8 Páginas) • 422 Visualizações
...
- 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.
Como dito anteriormente, primeiramente foram avaliadas matrizes de dimensões de 10 até 100.000. Porém, quando solicitou-se a criação de uma matriz quadrada da ordem de 100.000, o MATLAB® não suportou a execução desta parte do algoritmo.
[pic 2]
Figura 2: Erro ao inverter uma matriz (mxm) de ordem 100.000.
O erro, foi devido à falta de memória para a inversão dessa matriz, como podemos observar a seguir.
[pic 3]
Figura 3: Memória gasta pelo algoritmo e total de memória do computador.
Pela Figura 3, fica claro que uma matriz de ordem 100.000 extrapola o limite de memória do sistema, pois como cada elemento da matriz tem 8 bytes, em seu total teríamos um valor muito superior ao limite máximo de memória utilizado pelo MATLAB®. Lembrando que, o desempenho deste algoritmo varia de acordo com o computador utilizado. Nos anexos, será adicionado uma pequena amostra do desempenho do computador utilizado.
Por isso, foi definido que 10.000 é a dimensão máxima da matriz a ser analisada. Uma vez que os valores criados são múltiplos de 10, teríamos poucos intervalos para análise. Neste ínterim, foram adicionados valores intermediários, como: 50,500 e 5.000, como visto na Tabela 1.
Assim, foi criado gráfico da análise do custo computacional segundo a tabela 1 (Para melhor visualização da curva, optou-se por utilizar escala logarítmica).
[pic 4]
Gráfico 1: Curva para análise do custo computacional para inversão de matrizes (mxm).
Utilizando o comando feature('PrintMemoryStats') do MATLAB®, podemos analisar o total de memória RAM gasta pelo algoritmo final.
[pic 5]
Figura 4: Detalhamento da memória gasta pelo algoritmo.
Pela figura acima, podemos observar que em seu total, o algoritmo gasta aproximadamente 60% da memória total disponível.
Analisando o gráfico e a tabela 1, é notório que, conforme a dimensão das matrizes aumenta o tempo gasto para esta inversão também aumenta assim como o espaço de memória utilizado pois, quanto maior for as matrizes maior quantidade de cálculos serão necessários para execução do algoritmo, logo mais tempo e maior será o espaço de memória utilizado.
- Conclusão
Atualmente o ambiente competitivo deixa pouco espaço para erros. Dessa forma, cada vez mais o ramo empresarial faz uso da tecnologia para elaboração de projetos mais eficientes e de baixo custo.
Este trabalho aborda questões importantes quanto a análise de custo computacional de um algoritmo. Dentre estas, pode-se destacar o fator tempo e memória. Deixando claro a importância de fatores tempo e memória na otimização de algoritmos.
Ficou claro a influência do computador utilizado na execução dos algoritmos. Computadores que apresentam processadores mais eficientes, são capazes de desenvolver atividades simultâneas, porém, é claro, quanto maior o número de atividades desenvolvidas maior o tempo para executa-las. Quanto a memória do computador, esta também influencia no processamento de programas ou algoritmos. Assim, ao trabalhar com algoritmos que utilizam grande quantidade de memória, é recomendável, verificar a priori se a memória alocada é suficiente para evitar que em determinado momento da execução o programa aborte por insuficiência de memória, como ocorrido.
A linguagem, os comandos utilizados no algoritmo também influenciam diretamente na execução deste. Durante a elaboração do algoritmo, ficou claro que alguns códigos influenciam no tempo final de execução. Linguagens de programação mais simples, otimizará o algoritmo, o que reduzirá o tempo total de execução do mesmo. A reserva de espaço em memória para as variáveis, também influenciam neste tempo final. Quando se reserva espaço em memória para as variáveis utilizadas ao decorrer do programa com zeros, sua dimensão não será alterada, assim não será necessário um novo pedido de reserva de memória, diminuído assim, o tempo de execução.
Dentro do referencial
...