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

Zephir - phpub #51

Zephir - phpub #51

Zephir: busca por desempenho com PHP

Lucas de Souza Vieira

September 13, 2017
Tweet

More Decks by Lucas de Souza Vieira

Other Decks in Programming

Transcript

  1. Sobre o palestrante: • Desenvolvedor Web com foco em PHP.

    Estudante e divulgador científico nas horas vagas. Atualmente integra o time de desenvolvimento do Núcleo de Tecnologias para Educação (Uemanet) da Universidade Estadual do Maranhão. • Redes Sociais: ◦ Github: https://github.com/lucassouzavieira ◦ Twitter: https://twitter.com/lucassouzavs
  2. Como você já deve saber... • PHP, Python, Ruby, Perl

    , R e outras linguagens são escritas e atualmente mantidas em C (ou um mix de C com elas próprias ). • Servidores Web como Apache e Nginx são escritos, em grande parte, em C. • E quase todo o resto do mundo…
  3. Como você também já deve saber... • Depurar grandes programas

    em C não é uma tarefa tão fácil... • Cuidado com ponteiros e saltos • Você adora OOP ? Então ...
  4. PHP 7+ é realmente rápido! • Mais rápido e usa

    menos memória que a versão 5.6 • Benchmark da Zend: http://www.zend.com/en/resources/php7_infographic • Mandelbrot: ◦ 3x mais rápido que Ruby ◦ 5x mais rápido que Python ◦ 10x mais rápido que Perl
  5. Falcon PHP é realmente rápido também ! • Benchmark Falcon:

    https://blog.phalconphp.com/post/benchmarking-phalcon • Requisições: ◦ Usa (absurdamente) menos memória que os frameworks full stacks mais usados. ◦ Responde (absurdamente) mais rápido que os frameworks full stacks mais usados. • Escrito em C como uma extensão da linguagem
  6. Zephir • Ze(nd Engine) Ph(p) I(nt)r(mediate) • Foi criada com

    o objetivo de facilitar a criação e a manutenção de extensões para PHP. • AOT Compiler • Memory safe • Promove OOP • Dinamicamente e Estáticamente Tipada - ( Sim, isso mesmo ) • Reduz o overhead da interpretação da Zend Engine • É PHP e mais um pouco
  7. Zephir • Capaz de usar todas as classes nativas do

    PHP • O mesmo dito acima vale para outras extensões • Possui uma ferramenta CLI muito simples de se usar: ◦ Exportar stubs ◦ Exportar docs ◦ Exportar o código resultante ◦ Compilar e instalar a extensão
  8. Zephir - Onde usar ? • Criar bibliotecas úteis: ◦

    Estruturas de dados ◦ Drivers ◦ Clientes HTTP ( Lembra o cURL ? ) ◦ Templates Engines • Migrar partes de sua aplicação PHP ◦ Códigos bem testados e que pouco mudam ao longo do ciclo de vida da aplicação ◦ Rotinas que tomam muito tempo de processamento
  9. Zephir - Faz falta... • Manipulação de Threads • Ferramenta

    para escrever os testes ◦ PHPUnit após a criação da extensão testando o código resultante • Descrição de erros ◦ Na maioria das vezes você recebe um segdefault no terminal ◦ Alguns erros, mesmo de sintaxe não mostram uma descrição muito boa.
  10. Quer saber um pouco mais ? • Artigos: ◦ Zephir:

    Escrevendo extensões para PHP ▪ https://medium.com/@lucassouzavieira/zephir-escrevendo- extens%C3%B5es-para-php-e41b87a37795 • Projetos: ◦ ArangoDB PHP Driver: ▪ https://github.com/lucassouzavieira/arangodb-php-driver • Documentação: ◦ https://zephir-lang.com/