Home > Article > Backend Development > Introduction to HHVM (translated)
Original link: http://coderoncode.com/2013/07/24/introduction-hhvm.html "HHVM (HIpHop Virtual Machina) converts PHP code into high-level bytecode (generally considered an intermediate language). Then such bytecode is dynamically compiled by the JIT (just-in-time) compiler at runtime Based on this consideration, HHVM is similar to virtual machines in other languages including C#/CLR and Java/JVM.” A bit of a long history In early 2008, the Facebook website was running on HipHop (a PHP execution engine, now HPHP). Its original motivation was to convert a large amount of PHP code in the Facebook website into C++ code in order to save resources and improve application performance. Its original version is HPHPc (a compiler that converts PHP code into C++ code). In the next two years, the Facebook website continued to work on HipHop. At this time, HipHop added HPHPi (a "development mode" version of HPHP) and HPHPd (HipHop debugger). PHP applications running on the HipHop platform allow developers to view and step through code and debug interactively. At its peak, PHP code running on HipHop was 6 times more performant than PHP code running on the ZEND engine. However, there are still several shortcomings in the first iteration of HipHop: 1. HPHPc does not fully support the PHP language. The most obvious one is that it does not support the create_function and eval functions. Granted, I don't think it's a bad thing not to support the eval function. 2. Facebook developers must maintain two different engines (HPHPc and HPHPi), which results in duplication of work and waste of resources. 3. Finally, HPHPc requires a completely different deployment process, which will hinder its adoption by PHP developers. Given these problems, Facebook took two key actions in early 2010. One is to open source the HipHop platform. Open sourcing a project like this is a great way to build a community around the project and get help from the outside world. Second, Facebook started the development of a modern version of HipHop, which is HHVM (HipHop virtual Machine). HHVM improves the robustness of HPHPc and fixes many critical issues. HHVM is built on top of HPHPc and works by converting PHP code into high-level bytecode (an intermediate language). Such bytecode is dynamically converted into machine code by the JIT (Just-In-Time) compiler at runtime. If you're like me, you probably still have a vague memory of bytecode, machine code, and Just-In-Time compilers. So, let’s digress for a moment to quickly review these concepts and explain how they play a key role in HHVM. Bytecode, machine code and JIT, oh my...! Bytecode: It is a code that people cannot read and is designed to allow the interpreter or compiler to execute efficiently. When HHVM first imports our project, it converts all PHP code into an intermediate form called bytecode. The generated bytecode is independent of a specific type of computer architecture and therefore can be easily ported between different systems. Machine code: It is a set of instructions designed to be executed directly by the CPU. If you have ever played Assembly (who hasn’t?), you must have a good understanding of what machine code is. For the few of you who have no interest in playing with assembly or similar languages, machine code is code generated by a compiler or interpreter and can be executed directly by the CPU. JIT (Just In Time) compiler: Just in time compilation technology is a technology used to improve software performance. Its implementation principle is to compile the bytecodes stored in memory during execution. The JIT compiler imports these bytecodes and compiles them into the required parts. The performance and speed gained by applying these technologies can provide core advantages to HipHop and subsequent HHVM. Maintain a PHP code base while implementing performance comparable to compiled applications. The current HHVM basically supports the entire PHP5.4 version, however HHVM still has many bugs that hinder the execution of some applications. For this reason, Facebook's goal is to enable the top 20 open source PHP applications to run on HHVM. The first and most popular application to run on it was WordPress. Next Now we have a good understanding of what HHVM does and its advantages, and we can easily start testing applications running on it. In the following articles, I will introduce how to install HHVM on a virtual machine, run benchmarks on your application, and finally (fingers crossed) how to run Magento on HHVM.
For more articles, please follow my personal blog: http://www.nomoneynowife.com |