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

Medindo a Performance de Códigos PHP

Medindo a Performance de Códigos PHP

Jonata Weber

November 25, 2016
Tweet

More Decks by Jonata Weber

Other Decks in Technology

Transcript

  1. Medindo a Performance de
    Códigos PHP
    Por Jonata Weber

    View Slide

  2. @JonataWeber

    View Slide

  3. www.app2sales.com

    View Slide

  4. View Slide

  5. Performance
    Computer performance is the amount of work accomplished by a
    computer system.

    View Slide

  6. Aspects of performance
    ● Availability
    ● Response Time
    ● Processing Speed
    ● Latency
    ● Bandwidth
    ● Throughtput
    ● Scalability

    View Slide

  7. Pick any two
    Cheap
    Good
    Fast

    View Slide

  8. Development vs Production

    View Slide

  9. Tools

    View Slide

  10. Faker

    View Slide

  11. Profile Before Optimizing

    View Slide

  12. $then = microtime();
    myFunc();
    $now = microtime();
    echo sprintf("Elapsed: %f", $now - $then);
    There's a better way, right? :)

    View Slide

  13. Apache Benchmarking
    $ ab -n 100 -c 10 http://localhost:8000

    View Slide

  14. HTTP Benchmarking
    $ wrk -t12 -c400 -d30s http://localhost:8000

    View Slide

  15. Testing High Availability

    View Slide

  16. Load testing tool

    View Slide

  17. View Slide

  18. Profiling

    View Slide

  19. View Slide

  20. Install the xdebug
    $ pecl install xdebug

    View Slide

  21. Starting the Profiler (php.ini)
    xdebug.profiler_enable=1
    xdebug.profiler_output_dir
    xdebug.profiler_enable_trigger=1
    More informations:
    https://xdebug.org/docs/profiler

    View Slide

  22. Profiler Viewer

    View Slide

  23. Profiler Viewer (in the browser)

    View Slide

  24. Flame Graphs

    View Slide

  25. XHProf: A Hierarchical Profiler for PHP

    View Slide

  26. View Slide

  27. View Slide

  28. View Slide

  29. View Slide

  30. Demo

    View Slide

  31. Problemas comuns

    View Slide

  32. Problemas comuns
    ● Arquitetura
    ● Workload

    View Slide

  33. Arquitetura
    ● Sem cache;
    ● Hardware mal dimensionado;
    ● Aplicação single thread;
    ● Latência de rede não prevista.

    View Slide

  34. Workload
    ● Mais usuários que o esperado;
    ● Cache mal planejado.

    View Slide

  35. Otimização precoce,
    fazer ou não fazer, eis a questão.

    View Slide

  36. YAGNI
    You Aren't Gonna Need It

    View Slide

  37. Mas, as vezes é preciso!

    View Slide

  38. Make work.
    Make right.
    Make fast.

    View Slide

  39. O que não pode ser medido não
    pode ser melhorado.

    View Slide

  40. Esteja pronto, sempre!

    View Slide

  41. View Slide

  42. Obrigado!
    @JonataWeber

    View Slide

  43. Referências
    https://speakerdeck.com/tarsisazevedo/performance-analysis-101
    http://wiki.c2.com/?PrematureOptimization
    http://wiki.c2.com/?ProfileBeforeOptimizing
    http://wiki.c2.com/?MakeItWorkMakeItRightMakeItFast

    View Slide