3
respostas

[Dúvida] cash friendly

Em um dos cursos de javascript nós desenvolvemos o jogo pong no p5.js na função draw nós chamamos varias outras funções pra carregar coisas como images e movimento dos personagens. dito isso, a minha duvida é a seguinte: caso eu colocasse a função de mover o personagem na linha acima da função de carregar o personagem, ela seria lida primeiro, certo? se sim, entao fazer dessa forma seria uma maneira ruim pra memoria cash? pq o carregamento nao seria sequencial como mostrado no exemplo...

exemplo:

draw(){
movimentaRaquete();
mostraRaquete();
}

desse modo seria ruim pra memoria cash pois nao esta em sequencia? seria isso a que se refere o exemplo da aula?

draw(){
mostraRaquete();
movimentaRaquete();
}

já no modo acima seria o correto a se fazer para garantir um codigo cash friendly? seria isso?

3 respostas

Oi, Mariana, tudo bem?

A ideia de ser "cache-friendly" é sobre como você organiza seus dados e operações de maneira que aproveite ao máximo a memória cache do computador. Isso é especialmente relevante em linguagens de baixo nível como C e C++, onde você tem um controle mais direto sobre a memória.

No seu exemplo, você está falando sobre a ordem de execução de funções em JavaScript. Em teoria, a ordem em que você chama as funções movimentaRaquete() e mostraRaquete() não teria um impacto significativo na eficiência do cache. Isso porque JavaScript é uma linguagem de alto nível diversas abstrações entre seu código e a memória do computador. Além disso, o JavaScript tem um gerenciamento de memória automático, o que significa que você não tem controle direto sobre como e onde seus dados são armazenados na memória.

No contexto do curso de Arquitetura de Computadores, o exemplo é usado para ilustrar como a organização linear dos dados pode afetar o desempenho do cache em linguagens de baixo nível. No caso do JavaScript e do seu jogo Pong, a ordem das funções provavelmente não terá um impacto perceptível no desempenho do cache.

Dessa forma, em JavaScript, a ordem em que você chama movimentaRaquete() e mostraRaquete() não deve impactar significativamente a eficiência do cache. No entanto, é sempre uma boa prática escrever código de maneira clara e lógica, então se faz sentido mostrar a raquete antes de movimentá-la, você deve organizar seu código dessa maneira.

Espero ter ajudado. Caso tenha dúvidas, não hesite em postar no fórum!

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

entendi perfeitamente, mas vamos fingir aqui que js é uma linguagem de baixo nivel, nesse caso essa mudança afetaria a memoria cache? nao sei C ainda entao to só fazendo uma analogia

Oi, Mariana,

Desculpe a demora em te responder!

Tomando como suposição que a linguagem JavaScript fosse uma linguagem de baixo nível, sim, a ordem das funções dentro da draw() afetaria a memória cache. Contudo, lembre-se, como JavaScript não é uma linguagem de baixo nível, a ordem das funções geralmente não afeta diretamente a memória cache.

Espero ter ajudado. Caso tenha dúvidas, não hesite em perguntar no fórum!

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software