4developers 2015: phpng kontra hhvm - leszek krupiński

Post on 16-Jul-2015

182 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related