Hướng dẫn hhvm vs php 8 - hhvm vs php 8 2022

Hướng dẫn hhvm vs php 8 - hhvm vs php 8 2022

Thủ Thuật Hướng dẫn Hướng dẫn hhvm vs php 8 – hhvm vs php 8 Chi Tiết


Bạn đang tìm kiếm từ khóa Hướng dẫn hhvm vs php 8 – hhvm vs php 8 được Cập Nhật vào lúc : 2022-10-24 15:00:09 . Với phương châm chia sẻ Thủ Thuật Hướng dẫn trong nội dung bài viết một cách Chi Tiết 2022. Nếu sau khi Read tài liệu vẫn ko hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Mình lý giải và hướng dẫn lại nha.


Chắc bạn đã nghe tin cách đó vài tháng là JIT compiler sẽ tiến hành thêm vào PHP 8. Nếu bạn chưa nghe thì nó là cái poll này. 90% số contributor tham gia đã vote đồng ý đưa tính năng này vào phiên bản PHP 8. Từ PHP 7.0 đến giờ toàn bộ chúng ta đã liên tục có những thay đổi giúp tăng hiệu năng rồi, và đây sẽ lại là bước đột phá mới về hiệu năng cho PHP. Đây là một tính năng rất rộng, nó đã được khởi đầu tăng trưởng cách đó cả hai năm rồi, PHP 8.0 thì tối thiểu cũng hơn 1 năm nữa mới trình làng. Trong bài này toàn bộ chúng ta hãy cùng xem quá nó là gì và thử dùng nó xem thế nào nhé.


Nội dung chính Show


  • JIT là gì?

  • Nhanh hơn thật không?

  • Thế JIT để làm gì

  • Dùng thử xem sao

JIT là gì?


Có thể bạn cũng chưa chắc như đinh về JIT nên trước hết hãy lý giải nó là gì đã nhé. Chắc bạn đã và đang biết PHP là một ngôn từ thông dịch, nghĩa là code của bạn tránh việc phải được compile trước lúc chạy (in như C/C++). Thay vào đó thì PHP engine sẽ đọc code của bạn và chạy. Nói cách khác là bạn không code để compile thành machine code cho máy tính chạy mà là code một chiếc ngữ cảnh và đưa cho PHP để nó chạy.


PHP có một chiếc virtual machine gọi là Zend VM. Tại sao gọi nó là virtual machine, chính bới nó góp phần vai trò in như máy tính của bạn trong việc chạy code, như vừa lý giải ở trên ấy. Nó có trách nhiệm đọc và chạy code PHP của bạn. Nhưng mà trước đó thì code của bạn sẽ tiến hành PHP đọc và dịch thành opcode, là ngôn từ mà Zend VM hiểu được đã. Sau đó thì Zend VM mới chạy opcode này được. Đây là một chiếc hình minh họa cho dễ hiểu.


Hướng dẫn hhvm vs php 8 - hhvm vs php 8


Vậy là toàn bộ chúng ta cần một bước compile trước rồi mới đến bước thông dịch. Để tiết kiệm chi phí thời hạn thì toàn bộ chúng ta có một chiếc gọi là OPCache (Opcode Cache) để lưu lại kết quả của bước compile để lần sau tránh việc phải compile nữa.


Đó là cách PHP hoạt động và sinh hoạt giải trí cho tới giờ đây. Vậy giờ đây nói về JIT compiler nhé. Ngay tên thường gọi của nó đã có từ compiler rồi. Nghĩa là toàn bộ chúng ta sẽ compile code thành machine code để chạy. JIT là viết tắt của “Just-In-Time”, nghĩa là lúc nào cần đến thì mới compile thay vì compile trước rồi mới chạy. Khi nào chạy mới compile.Just-In-Time”, nghĩa là lúc nào cần đến thì mới compile thay vì compile trước rồi mới chạy. Khi nào chạy mới compile.


Đối với PHP thì JIT compiler sẽ compile opcode thành machine code và chạy luôn code đó thay vì phải đưa cho Zend VM để nó chạy. Vậy là toàn bộ chúng ta không cần bước thông dịch nữa và tất yếu là code chạy nhanh hơn rồi .


Hướng dẫn hhvm vs php 8 - hhvm vs php 8.


Nhanh hơn thật không?


Đây là một trong cái demo đã cho toàn bộ chúng ta biết vận tốc vượt trội của PHP với JIT compiler so với phiên bản cũ. Trong video là một đoạn code tạo hình ảnh 3D.



Nhưng mà đợi đã, có ai lại dùng PHP để tạo hình ảnh 3D bao giờ đâu .


Hướng dẫn hhvm vs php 8 - hhvm vs php 8.


Vì code của toàn bộ chúng ta giờ đây được compile thành machine code và được chạy trực tiếp bởi CPU thay vì trình thông dịch nên vận tốc được tăng thêm đó đó là ở những đoạn code tính toán và sử dụng CPU nhiều. Như đoạn code ở trên ví dụ điển hình. Nhưng mà web app thì lại chẳng có mấy thứ code như vậy mà toàn là code tùy từng I/O (database query, file upload, HTTP request…), trong số đó phần lớn thời hạn là app của bạn chả làm gì mà chỉ ngồi đợi kết quả từ database hay API… Vậy nên rất tiếc là web app của bạn hầu như sẽ chẳng nhanh lên tí nào cả .


Hướng dẫn hhvm vs php 8 - hhvm vs php 8.


Thế JIT để làm gì


Kể từ PHP 7.0, yếu tố performance của PHP đã được quan tâm hơn bao giờ hết, một phần nhờ việc đối đầu đối đầu tới từ HHVM của Facebook (cũng dùng JIT compiler). OPCache, cấu trúc tài liệu, mọi thứ đều được tối ưu từng tí một để đạt hiệu năng cao nhất. Và rồi gần như thể chẳng còn nơi nào để improve mà mang lại hiệu năng tăng đáng kể nữa cả.


Ngoài ra thì hiệu năng của PHP riêng với một ngôn từ server đã hoàn toàn có thể xem là tương đối tốt rồi, không hề là một PHP chậm rãi rất mất thời hạn rồi nữa. Nên đã và đang tới lúc mở rộng kĩ năng của PHP một chút ít, đến những nghành như data analysis, 3D/2D rendering…


Trước đây những đoạn code yên cầu performance cao thường được viết dưới dạng C/C++ extension thay vì PHP package. Ví dụ như phpredis luôn nhanh hơn predis đến 6-7 lần. Nếu code PHP được compile thay vì interpret thì toàn bộ chúng ta sẽ đã có được những package PHP với hiệu năng không kém gì những extension viết bằng C/C++.


Vậy nên JIT compiler đã được chọn vì đấy là phía đi thú vị và tiềm năng hơn hết.


Dùng thử xem sao


Giới thiệu xong rồi thì giờ đây hãy thử dùng xem sao. Vì vẫn chưa tồn tại bản release cho PHP 8.0 nên mình sẽ phải compile từ source code. Source code của PHP thì ở đây. Dù version 7.4 vẫn đang alpha nhưng master đã là 8.0 rồi. Đầu tiên tải source code về đã


wget -O php.zip https://github.com/php/php-src/archive/master.zip

unzip php.zip

cd php-src-master


Sau đó cài dependencies. Mình dùng Ubuntu, nếu bạn dùng distro khác thì tự tìm package tương tự nhé.


apt-get install

autoconf

bison

dpkg-dev

file

g++

gcc

libc-dev

make

pkg-config

re2c

libxml2-dev

libsqlite3-dev


Generate build files.


./buildconf


Sau đó là chạy


apt-get install

autoconf

bison

dpkg-dev

file

g++

gcc

libc-dev

make

pkg-config

re2c

libxml2-dev

libsqlite3-dev

5 để setup bản build. Lựa chọn những option để compile PHP. Bạn hoàn toàn có thể chọn chỗ để cài bằng phương pháp thêm apt-get install

autoconf

bison

dpkg-dev

file

g++

gcc

libc-dev

make

pkg-config

re2c

libxml2-dev

libsqlite3-dev

6. Mặc định nó sẽ cài vào apt-get install

autoconf

bison

dpkg-dev

file

g++

gcc

libc-dev

make

pkg-config

re2c

libxml2-dev

libsqlite3-dev

7 nên nếu bạn có cài sẵn 1 phiên bản PHP khác rồi thì nhớ set cái này. PHP sẽ tiến hành cài vào đường dẫn apt-get install

autoconf

bison

dpkg-dev

file

g++

gcc

libc-dev

make

pkg-config

re2c

libxml2-dev

libsqlite3-dev

8. Thêm cả đường dẫn cho file config bằng apt-get install

autoconf

bison

dpkg-dev

file

g++

gcc

libc-dev

make

pkg-config

re2c

libxml2-dev

libsqlite3-dev

9 và ./buildconf

0 nếu bạn muốn nữa.


Ngoài ra cũng còn nhiều option khác, bạn hoàn toàn có thể xem toàn bộ option bằng phương pháp chạy


./configure –help


Ví dụ mình chạy


apt-get install

autoconf

bison

dpkg-dev

file

g++

gcc

libc-dev

make

pkg-config

re2c

libxml2-dev

libsqlite3-dev

5 như sau./configure

–prefix=/opt

–with-config-file-path=/opt/php

–with-config-file-scan-dir=/opt/php/conf.d


Build.


make -j$(nproc)


Build xong thì cài. Có thể sẽ phải dùng


./buildconf

2 tùy prefix mà bạn chọn lúc trước nhé.make install


Thử kiểm tra bằng


./buildconf

3 xem. À nếu bạn có set ./buildconf

4 vừa nãy thì nhớ chạy PHP đúng đường dẫn nhé. Ví dụ ./buildconf

5.


PHP 8.0.0-dev (cli) (built: Jul 15 2022 02:22:59) ( NTS )

Copyright (c) The PHP Group

Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies

with Zend OPcache v8.0.0-dev, Copyright (c), by Zend Technologies


JIT compiler là một phần của OPCache extension nên để dùng được JIT thì bạn phải bật OPCache trước đã. Thêm mấy dòng này vào file php.ini ở trong


./buildconf

6 lúc nãy nhé.zend_extension=opcache.so

opcache.enable=1

opcache.enable_cli=1


Để bật JIT compiler thì bạn thêm 2 dòng này. Dòng thứ hai là optional nhé, nhưng mà có vẻ như được khuyến khích nên dùng thay vì default. Chi tiết về những config bạn hoàn toàn có thể xem ở đây.


opcache.jit_buffer_size=32M

opcache.jit=1235


Bây giờ bạn thử chạy một file PHP với option


./buildconf

7 xem. Sẽ thấy được assembly code được compile ra. Ví dụ mình có file như này.apt-get install

autoconf

bison

dpkg-dev

file

g++

gcc

libc-dev

make

pkg-config

re2c

libxml2-dev

libsqlite3-dev

0


Thì nó sẽ compile thành assembly code như sau.


apt-get install

autoconf

bison

dpkg-dev

file

g++

gcc

libc-dev

make

pkg-config

re2c

libxml2-dev

libsqlite3-dev

1


Bây giờ thử 1 chút benchmark xem nó có nhanh hơn không nhé. Trong source code của PHP có sẵn 1 file Zend/bench.php để bạn chạy thử. Trong file này đều là những đoạn code tính toán thật nhiều (hash, loop .etc). Đây là kết quả mình chạy ra (đã được format lại cho dễ so sánh).


apt-get install

autoconf

bison

dpkg-dev

file

g++

gcc

libc-dev

make

pkg-config

re2c

libxml2-dev

libsqlite3-dev

2


Tất nhiên là nó chạy nhanh hơn rồi, không còn gì lạ lẫm cả. Mình sẽ thử benchmark 1 cái web app nữa xem sao. Mình tạo 1 cái project Laravel mới tinh và benchmark bằng tool ApacheBench


apt-get install

autoconf

bison

dpkg-dev

file

g++

gcc

libc-dev

make

pkg-config

re2c

libxml2-dev

libsqlite3-dev

3


Kết quả thì đúng như toàn bộ chúng ta đã nói ở phần trước là chả khác gì cả .


Hướng dẫn hhvm vs php 8 - hhvm vs php 8.apt-get install

autoconf

bison

dpkg-dev

file

g++

gcc

libc-dev

make

pkg-config

re2c

libxml2-dev

libsqlite3-dev

4


TL;DR


Tóm lại là PHP có nhanh lên đáng kể, nhưng trước mắt thì hầu hết code PHP đang tồn tại trên toàn thế giới này sẽ chẳng nhanh hơn là mấy. Tuy nhiên, những hướng tăng trưởng mới sẽ sớm mở ra với PHP.


Tải thêm tài liệu liên quan đến nội dung bài viết Hướng dẫn hhvm vs php 8 – hhvm vs php 8


programming

php

PHP 8 JIT


Hướng dẫn hhvm vs php 8 - hhvm vs php 8Reply
Hướng dẫn hhvm vs php 8 - hhvm vs php 88
Hướng dẫn hhvm vs php 8 - hhvm vs php 80
Hướng dẫn hhvm vs php 8 - hhvm vs php 8 Chia sẻ


Share Link Down Hướng dẫn hhvm vs php 8 – hhvm vs php 8 miễn phí


Bạn vừa Read nội dung bài viết Với Một số hướng dẫn một cách rõ ràng hơn về Video Hướng dẫn hhvm vs php 8 – hhvm vs php 8 tiên tiến và phát triển nhất Chia Sẻ Link Down Hướng dẫn hhvm vs php 8 – hhvm vs php 8 miễn phí.



Hỏi đáp vướng mắc về Hướng dẫn hhvm vs php 8 – hhvm vs php 8


Nếu sau khi đọc nội dung bài viết Hướng dẫn hhvm vs php 8 – hhvm vs php 8 vẫn chưa hiểu thì hoàn toàn có thể lại Comment ở cuối bài để Tác giả lý giải và hướng dẫn lại nha

#Hướng #dẫn #hhvm #php #hhvm #php

Related posts:

Post a Comment

Previous Post Next Post

Discuss

×Close