Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

4Developers 2015: PHPNG kontra HHVM - Leszek Krupiński

365 views

Published on

PHPNG kontra HHVM

Language: Polish

W ciągu ostatniego roku świat PHP doświadczył kilku małych rewolucji. Jedne z najważniejszych dotyczą wydajności - są to popularyzacja środowiska HHVM, oraz duży refactoring kodu interpretera PHP określony łącznie pod nazwą PHPNG. Zmiany te, pomimo że obie poprawiają znacznie wydajność skryptów, działają w zupełnie inny sposób. W czasie prelekcji opowiem czym charakteryzują się te rozwiązania, czym się różnią, a także do kogą są one skierowane. W czasie prelekcji będę podpierał się elementami kodu źródłowego interpretera PHP.

Published in: Software
  • Be the first to comment

  • Be the first to like this

4Developers 2015: PHPNG kontra HHVM - Leszek Krupiński

  1. 1. PHPNG kontra HHVM Leszek Krupiński 4developers 2015
  2. 2. LEAFNODE
  3. 3. .pl /PHPersPL +grupy
  4. 4. Teraz
  5. 5. PHP 5.6
  6. 6. Drobne zmiany składniowe
  7. 7. PHP 7
  8. 8. PHP NG
  9. 9. Głęboka refaktoryzacja
  10. 10. Optymalizacja struktur wewnętrznych
  11. 11. Operacje na stosie
  12. 12. Zarządzanie pamięcią
  13. 13. Immutable Array
  14. 14. Efekty
  15. 15. 30% lepsze wyniki w testach syntetycznych
  16. 16. 20-70% szybsze działanie prawdziwych aplikacji
  17. 17. Lies, damned lies, benchmarks
  18. 18. Autor: Dmitry Stogov
  19. 19. Autor: Dmitry Stogov
  20. 20. http://devplant.net/2014/08/11/optimizing-php-code/
  21. 21. Abstract Syntax Tree
  22. 22. LEKSER PARSER / KOMPILATOR URUCHOMIENIE LEKSEMY OPCODE
  23. 23. $y = 5; $y = 5 array[309, ‘$y’, 1] = array[305, 5, 1] 309 - T_VARIABLE 305 - T_LNUMBER
  24. 24. LALR(1) parser Single-pass compiler
  25. 25. [$a, $b, $c] = $array;
  26. 26. LEKSER PARSER / KOMPILATOR URUCHOMIENIE LEKSEMY OPCODE OPCACHE / OPTIMIZER
  27. 27. LEKSER PARSER KOMPILATOR URUCHOMIENIE LEKSEMY WĘZŁY AST OPCODE
  28. 28. A = B + C = 1; D var var var var value value value * 2 value products products products sums sums assign assign stmtstmt statements
  29. 29. Usunięcie ograniczeń składniowych
  30. 30. Uruchomienie
  31. 31. Niekompatybilność
  32. 32. ROZSZERZENIA interbase oci8 mssql pdo_oci pdo_dblib sybase_ct
  33. 33. Drobne zmiany w składni
  34. 34. HHVM
  35. 35. HipHop for PHP
  36. 36. KOD PHP KOD C KOMPILACJA URUCHOMIENIE
  37. 37. HHVM
  38. 38. KOD PHP BYTECODE JIT COMPILER URUCHOMIENIE
  39. 39. Hack
  40. 40. Return type hinting Member variable types Type-safe collections Generics Type aliasing Nullable types Tuples Shapes
  41. 41. XHP
  42. 42. Transpiler
  43. 43. Zgodność HHVM z PHP
  44. 44. Open Source Tests: 95.15%
 25 Frameworks at 100% http://hhvm.com/frameworks/
  45. 45. Uruchamianie
  46. 46. HTTP Server PHP FPM Backend class2.php class1.php index.php
  47. 47. HTTP Server HHVM Backend class2.php class1.php index.php
  48. 48. Używać?
  49. 49. 1. google.com 2. facebook.com 3. youtube.com 4. yahoo.com 5. baidu.com 6. amazon.com 7. wikipedia.org 8. twitter.com 9. taobao.com 10. qq.com
  50. 50. 1. google.com 2. facebook.com 3. youtube.com 4. yahoo.com 5. baidu.com 6. amazon.com 7. wikipedia.org 8. twitter.com 9. taobao.com 10. qq.com
  51. 51. Roadmap 2015 Integracja LLVM Nowe platformy Garbage collector Zarządzanie pamięcią Wsparcie dla OS X Integracja z Hack typechecker Pliki INI XHP 2.0 w Hack Poprawki zgodności
  52. 52. Fight!
  53. 53. PHPNG/PHP7 + duże community + szeroka baza testowa + perspektywy (AST) - brak JIT - chaotyczny rozwój
  54. 54. HHVM + wydajność + drop-in zamiast FPM + hack - zgodność (…ale będzie lepiej) - niewielka baza testowa - duże koszty wdrożenia
  55. 55. Przyszłość
  56. 56. PHP 7
  57. 57. Return type hinting
  58. 58. Scalar Type Hints Model hybrydowy
  59. 59. Fatal Exceptions
  60. 60. T_SPACESHIP Because T_PAAMAYIM_NEKUDOTAYIM was not enough.
  61. 61. <=>
  62. 62. Kolejne interpretery
  63. 63. Specyfikacja języka
  64. 64. Czy potrzebne jest wiele interpreterów?
  65. 65. Linki http://bit.ly/phpng-zendcon http://bit.ly/php-ast http://bit.ly/php7timeline https://github.com/php/php-langspec http://bit.ly/hhvm-phpcon2014 https://wiki.php.net/phpng https://wiki.php.net/phpng-int https://wiki.php.net/rfc http://bit.ly/hhvm-etsy
  66. 66. Pytania?
  67. 67. Dziękuję @leafnode http://speakerdeck.com/leafnode/ i zapraszam na mój drugi wykład “Dobrze posól swoje hasło”, 17:00, Security

×