Como trocar memória por tempo de execução | Prefix-sum

Поделиться
HTML-код
  • Опубликовано: 3 окт 2024
  • 📚 Livro para entender estruturas de dados e algoritmos: amzn.to/4bYu4VE

Комментарии • 17

  • @feliperesende4505
    @feliperesende4505 6 месяцев назад +10

    Esse conceito é usado para fazer sistemas ECS para jogos. Componentes para entidades são alocados em grandes arrays de dados e usamos uma técnica chamada Sparse Set onde usamos um outro array para indexar os componentes que estão sendo usados. Então em jogo você prevê que vai ter por exemplo no maximo 100 inimigos em uma cena e já aloca componentes suficientes para esses 100 inimigos. Pode parecer desperdicio de memoria, mas adicionar, remover ou ler componentes viam todas operações O(n) que são essenciais em jogos. Isso também facilita para jogos online que precisam fazer rollback e copiar constantemente buffers de dados entre um frame ou outro. Além disso, os dados ficam todos alinhados em memoria o que torna a cpu mais eficiente. O único problema dessa abordagem é que é bem mais complicado de se programar um jogo pois isso exige uso massivo de ponteiros e estruturas como listas dinâmicas ou dicionários são um terror para se implementar.

  • @hiagodeoliveirabragabatist5172
    @hiagodeoliveirabragabatist5172 5 месяцев назад

    Muito legal o conteúdo! Essa ideia é a de ter uma tabela ou array com as respostas é o paradigma de programação dinâmica, né?

  • @zonzo2822
    @zonzo2822 6 месяцев назад +1

    Muito obrigado pelo seu canal, nao pare pf

  • @Lucas94467
    @Lucas94467 6 месяцев назад +5

    Não entendo muito, mas não continuaria sendo O(n), já que pra armazenar as somas dos números ta fazendo um for?

    • @danielcortes4551
      @danielcortes4551 6 месяцев назад +1

      Sim mas só pra montar, pra consultar é o(N)

    • @antoniomarques4693
      @antoniomarques4693 6 месяцев назад

      Sim, o calculo da array do prefix Sum vai ser sempre O(n). Porem, toda vez que for preciso acessar a array original mais de uma vez para calcular a soma dos elementos, usar o valores salvos ja vai ser vantajoso, pq so vai ser preciso acessar o valor e nao calcula-lo

    • @aquijazumcanal9863
      @aquijazumcanal9863 6 месяцев назад

      Pra montar é O(N). Pra consultar com prefix-sum será O(1)

  • @victorbiasibetti
    @victorbiasibetti 6 месяцев назад

    bom demais seus videos!!!

  • @miguelkawakami2565
    @miguelkawakami2565 6 месяцев назад +1

    qual app/site você usa para fazer as anotações? vídeo muito bom, como sempre!

  • @gabrielbiel974
    @gabrielbiel974 6 месяцев назад

    Muito bom, vídeo!

  • @jaelsonperdisch9703
    @jaelsonperdisch9703 6 месяцев назад

    Como você consegue pensar e saber disso, as vezes demora pra conseguir pensar em otimização ou é repido?

  • @GabrielBrisolara-c1t
    @GabrielBrisolara-c1t 6 месяцев назад +1

    Qual o nome da aplicação que usa para mostrar a webcam?

  • @catrofe6041
    @catrofe6041 6 месяцев назад

    Ótimo vídeo, porem brincadeiras a parte eu vi um Else ali e aprendi que em else você inverte o if, e cria um early return. Foi um cara bem pica que falou isso então eu confio.

    • @DonManolloz
      @DonManolloz 6 месяцев назад +1

      Voce aprendeu parcialmente errado. Não existe bala de prata na programação. Inverter a logica do if e usar early return é criar uma guard clause. NEM SEMPRE é isso que você quer. As vezes você realmente quer decidir entre duas e apenas duas coisas que não são necessariamente opostas.

    • @donizetevida2149
      @donizetevida2149 6 месяцев назад +2

      Normalmente você faz early return pra evitar códigos muito grandes indentados
      Não existe "regra"
      Eu uso sempre, mas não quer dizer que quem usa tá errado