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

Zephir - phpub #51

Zephir - phpub #51

Zephir: busca por desempenho com PHP

Avatar for Lucas de Souza Vieira

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/