Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SPL - Estruturas de Dados (CEL Casts)

SPL - Estruturas de Dados (CEL Casts)

Apresentação realizada no canal CEL Casts (https://www.youtube.com/watch?v=GlQSIEYQqDQ).

Davi Marcondes Moreira

October 31, 2017
Tweet

More Decks by Davi Marcondes Moreira

Other Decks in Programming

Transcript

  1. O que é a SPL? Standard PHP Library Surgiu como

    parte do core do PHP a partir da versão 5.0.0
  2. Além do array() • Array ◦ Jogue valores, pegue valores

    ◦ PHP Hash Table (DJBX33A) ◦ Formato dinâmico e seu custo na memória
  3. Além do array() • Array ◦ Jogue valores, pegue valores

    ◦ PHP Hash Table (DJBX33A) ◦ Formato dinâmico e seu custo na memória • Estruturas de dados da SPL ◦ Jogue valores, pegue valores, mas com eficiência ◦ Oferecem diferentes performances ◦ Podem substituir os arrays tradicionais :)
  4. Notações Matemáticas • Big-O Pior cenário possível. O elemento é

    o último na sequência, ou nem mesmo existe. • Big-Omega (Ω) Melhor cenário possível. O elemento é o primeiro na sequência. • Big-Theta (Θ) Pior cenário e melhor cenário são equivalentes. Há somente um elemento.
  5. Complexidades de Algoritmos • Constante O(1) Tempo é sempre o

    mesmo. • Linear O(n) Tempo cresce de forma constante. • Logarítmico O(log n) Mais rápido quando há mais elementos. • Quadrática O(n^2) Iteração dupla com cada elemento. E outras como • Polinomial O(n^c) • Exponencial O(c^n) • Fatorial O(n!)
  6. Listas Duplamente Encadeadas • SplDoublyLinkedList ◦ SplStack ◦ SplQueue •

    Características ◦ Trabalham melhor com sequências onde a ordem dos elementos precisa ser respeitada
  7. Árvore • SplHeap ◦ SplMaxHeap ◦ SplMinHeap ◦ SplPriorityQueue •

    Características ◦ Ordenação automática dos elementos. ◦ Toda iteração acaba percorrendo todos os elementos.
  8. Array • SplFixedArray • Características ◦ Pode ter o tamanho

    alterado através de setSize() ◦ Aceita arrays comuns como parâmetro através de fromArray() ◦ Não aceita índices que não sejam inteiros
  9. Dicionário • SplObjectStorage • Características ◦ Comportamento semelhante ao array

    (hash table), porém mais lento ◦ Possui métodos implementados interessantes (adicionar/remover/buscar elementos) ◦ Indicado para grandes quantidades de objetos, onde a ordem não é relevante
  10. Aprendi que • Estruturas e algoritmos são incríveis de estudar

    • Velocidade sempre é relativa • Testes com grande quantidade de dados são importantes • Na dúvida, use um array • Procurar melhorar sempre - tanto o código como você mesmo!
  11. • Documentação oficial https://secure.php.net/manual/pt_BR/book.spl.php • [Apresentação] New SPL Features in

    PHP 5.3 https://www.slideshare.net/tobias382/new-spl-features-in-php-53 • [Apresentação] PHP UK Conference 2014 - (Re)Discovering the SPL https://www.youtube.com/watch?v=Z4piH7PTjVc • [Livro] Mastering the SPL Library https://www.amazon.com/Mastering-SPL-Library-architect-guide/dp/1940111005 • [Curso] Princeton Algorithms I https://www.youtube.com/watch?v=pRnKTFo1zss&list=PL7D8f3XHhvX-SyX8Bzj5OeJVox EYgWNtJ • Efficient data structures for PHP 7 https://medium.com/@rtheunissen/efficient-data-structures-for-php-7-9dda7af674cd