Skip to main content

[PHP] Cải thiện tốc độ PHP với PHP JIT-ir

PHP đang tiếp tục cải tiến hết phiên bản này đến phiên bản khác. Một đề xuất gần đây nhằm cải thiện hiệu suất PHP hơn nữa vừa được nhóm nhà phát triển cốt lõi của PHP chấp nhận.

Đề xuất này, được gọi là JIT-ir, nhằm mục đích triển khai một JIT engine (công cụ biên dịch Just in Time) sẽ thay thế công cụ JIT PHP 8.x hiện tại.

Đọc bài viết này để tìm hiểu thêm về công cụ JIT-ir mới này là gì và mã PHP của bạn sẽ được hưởng lợi như thế nào từ cải tiến này khi nó được tích hợp trong các phiên bản PHP trong tương lai.

PHP JIT Engine là gì

JIT (Just In Time) là một phần của runtime engine nó biên dịch mã nguồn ngôn ngữ cao cấp thành mã ngôn ngữ cấp thấp hơn mà máy có thể đọc được và mã ngôn ngữ cấp thấp hơn này sẽ được thực thi nhanh hơn so với khi thông dịch (compiler)

PHP JIT Engine sẽ biên dịch các Opcode PHP thành mã gốc có thể được thực thi nhanh hơn bởi CPU trong máy tính mà bạn sử dụng để chạy PHP.

PHP Opcodes là kết quả của việc biên dịch mã nguồn PHP thành một tập hợp các hướng dẫn thể hiện mã PHP đó bằng ngôn ngữ cấp thấp hơn.

Trước PHP 8, công cụ thời gian chạy PHP sẽ biên dịch mã nguồn PHP thành các mã opcode PHP (Zend). Sau đó, các opcode sẽ được diễn giải và thực thi để chạy mã PHP.

PHP 8 đã giới thiệu một JIT Engine có thể biên dịch các mã PHP thành mã gốc (Native code - là dữ liệu nhị phân được biên dịch để chạy trên bộ xử lý, chẳng hạn như bộ xử lý lớp Intel x86) . 

Nó sử dụng DynAsm (được phát triển cho dự án LuaJIT) để thực hiện việc biên dịch mã opcode thành mã gốc. Các nhà phát triển cốt lõi của PHP đã phê duyệt đề xuất của họ vào tháng 3 năm 2019. PHP 8.0, với công cụ JIT tích hợp đầu tiên, được phát hành vào tháng 11 năm 2020.

PHP JIT-ir là gì 

JIT-ir là tên của một đề xuất mới mà các nhà phát triển core của PHP đã chấp nhận vào tháng 10 năm 2023 để cung cấp cách triển khai JIT mới cho phiên bản PHP trong tương lai.

Dmitry Stogov đã phát triển JIT Engine mới này và anh ấy đã cung cấp một bản vá cho mã PHP cốt lõi để bắt đầu thử nghiệm JIT Engine mới này.

Dmitry hy vọng rằng nó sẽ cải thiện hiệu suất từ 5% đến 10% cho mã PHP. Nó cũng sẽ tạo ra mã được biên dịch sẽ chiếm ít bộ nhớ hơn.

Dmitry đã cung cấp một bài trình bày thú vị về PHP IR JIT framework mà bạn có thể xem để hiểu rõ hơn cách thức hoạt động của cải tiến này đối với PHP JIT.

Một số thông tin về PHP JIT-ir

Hiện tại, cải tiến này đã được gửi dưới dạng bản vá để cải thiện tiện ích mở rộng opcache. Nếu bạn có khả năng xây dựng PHP từ mã nguồn, bạn có thể thử bản vá này ngay bây giờ.

Nếu không, bạn có thể phải đợi bản phát hành stable PHP tiếp theo để được hưởng lợi từ PHP JIT Engine mới này.

Danh sách tính năng PHP 8.3 bị đóng . Vì vậy, cải tiến này có thể được cung cấp trong PHP 8.4 hoặc là PHP 9.0.

Nếu các nhà phát triển của PHP tiếp tục tuân theo mô hình phát hành tương tự là tung ra một bản phát hành PHP ổn định hàng năm thì PHP 8.4 có thể được tung ra vào khoảng tháng 11 và tháng 12 năm 2024. 

Tuy nhiên, điều này có thể đúng hoặc sai vì nó phụ thuộc vào quyết định của các nhà phát triển của PHP.

Nguồn: phpclasses.org