View
186
Download
0
Category
Preview:
Citation preview
PHPNG kontra HHVM
Leszek Krupiński 4developers 2015
LEAFNODE
.pl
/PHPersPL+grupy
Teraz
PHP 5.6
Drobne zmiany składniowe
PHP 7
PHP NG
Głęboka refaktoryzacja
Optymalizacja struktur
wewnętrznych
Operacje na stosie
Zarządzanie pamięcią
Immutable Array
Efekty
30% lepsze wyniki w testach
syntetycznych
20-70% szybsze działanie prawdziwych
aplikacji
Lies, damned lies, benchmarks
Autor: Dmitry Stogov
Autor: Dmitry Stogov
http://devplant.net/2014/08/11/optimizing-php-code/
Abstract Syntax Tree
LEKSER
PARSER / KOMPILATOR
URUCHOMIENIE
LEKSEMY
OPCODE
$y = 5;
$y
=
5
array[309, ‘$y’, 1]
=
array[305, 5, 1]
309 - T_VARIABLE 305 - T_LNUMBER
LALR(1) parser Single-pass compiler
[$a, $b, $c] = $array;
LEKSER
PARSER / KOMPILATOR
URUCHOMIENIE
LEKSEMY
OPCODE
OPCACHE / OPTIMIZER
LEKSER
PARSER
KOMPILATOR
URUCHOMIENIE
LEKSEMY
WĘZŁY AST
OPCODE
A = B + C = 1; D
var var var var
value value value
* 2
value
products products products
sums sums
assign assign
stmtstmtstatements
Usunięcie ograniczeń składniowych
Uruchomienie
Niekompatybilność
ROZSZERZENIA
interbase
oci8
mssql
pdo_oci
pdo_dblib
sybase_ct
Drobne zmiany w składni
HHVM
HipHop for PHP
KOD PHP
KOD C
KOMPILACJA
URUCHOMIENIE
HHVM
KOD PHP
BYTECODE
JIT COMPILER
URUCHOMIENIE
Hack
Return type hinting
Member variable types
Type-safe collections
Generics
Type aliasing
Nullable types
Tuples
Shapes
XHP
Transpiler
Zgodność HHVM z PHP
Open Source Tests: 95.15%25 Frameworks at 100%
http://hhvm.com/frameworks/
Uruchamianie
HTTP Server PHP FPM Backend
class2.php
class1.php
index.php
HTTP Server HHVM Backend
class2.php
class1.php
index.php
Używać?
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
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
Roadmap 2015Integracja 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
Fight!
PHPNG/PHP7
+ duże community
+ szeroka baza testowa
+ perspektywy (AST)
- brak JIT
- chaotyczny rozwój
HHVM
+ wydajność
+ drop-in zamiast FPM
+ hack
- zgodność (…ale będzie lepiej)
- niewielka baza testowa
- duże koszty wdrożenia
Przyszłość
PHP 7
Return type hinting
Scalar Type HintsModel hybrydowy
Fatal Exceptions
T_SPACESHIPBecause T_PAAMAYIM_NEKUDOTAYIM was not enough.
<=>
Kolejne interpretery
Specyfikacja języka
Czy potrzebne jest wiele interpreterów?
Linkihttp://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
Pytania?
Dziękuję
@leafnode http://speakerdeck.com/leafnode/
i zapraszam na mój drugi wykład “Dobrze posól swoje hasło”, 17:00, Security
Recommended