1
resposta

Dúvida: Custo de tempo por alocação de memória.

Boa tarde. Na vídeo aula, o professor usou uma função para movimentar os fantasmas do jogo, chamando-a de "fantasmas". Dentro dessa função ele teve que criar uma cópia do mapa atual antes de mover os fantasmas. Para isso, teve que declarar uma nova estrutura chamada "copia" e alocar a memória para a matriz dessa estrutura antes de copiá-la. No vídeo, o professor declarou a estrutura cópia dentro da função "fantasmas" e executou a alocação e posterior liberação de memória também dentro da função. Dessa maneira, cada vez que a função "fantasmas" for executada uma nova alocação e liberação de memória será executada. Se a estrutura cópia, bem como a alocação/liberação de memória de sua matriz, forem declarada/executadas na função "main" apenas uma vez, isso economizaria tempo de execução do programa? Sei que no caso esse tempo é curto e não faz diferença. Mas uma alocação de memória pode prolongar a execução de um programa se for executada multiplas vezes? Se sim, a dimensão da memória alocada tem influencia no tempo consumido? Obrigado

1 resposta

Oi oi, Pedro, tudo bem?

A resposta para sua pergunta é sim, executar a alocação e liberação de memória apenas uma vez na função main economizaria tempo de execução do programa. Quando uma alocação de memória é executada várias vezes, isso pode prolongar a execução do programa, especialmente se a dimensão da memória alocada for grande.

Ao declarar a estrutura cópia e executar a alocação e liberação de memória dentro da função fantasmas, isso significa que a alocação e liberação de memória serão executadas toda vez que a função for chamada. Isso pode parecer insignificante para pequenas alocações de memória, mas para programas maiores com alocações de memória mais complexas, isso pode afetar significativamente o tempo de execução do programa.

Ao executar a alocação e liberação de memória apenas uma vez na função main, você estará economizando tempo de execução do programa, pois a alocação e liberação de memória serão executadas apenas uma vez. A dimensão da memória alocada também pode afetar o tempo consumido, pois alocações de memória maiores podem levar mais tempo para serem executadas.

Ou seja, nesse caso, a diferença de tempo não será muito grande. Em outros casos, é importante avaliar a necessidade.

Espero ter ajudado :)

Abraços e ótimos estudos!