>  Q&A  >  본문

zend-opcache - PHP의 opcache와 최근 PHP jit의 차이점은 무엇입니까?

opcache는 zend 엔진 컴파일로 생성된 opcode를 캐시하는 데 사용되므로 다음에 컴파일할 필요가 없습니다.
최근에 PHP jit에 대해 듣고 jit의 개념에 대해 살펴보았습니다.

JIT 컴파일(Just-In-Time 컴파일), 즉 좁은 의미의 Just-In-Time 컴파일은 특정 코드 조각이 처음 실행될 때 컴파일된 후 실행되는 것을 의미합니다. 컴파일 없이 직접 실행되는 것은 동적 컴파일의 특별한 경우입니다.

PHP의 jit과 opcache의 차이점은 무엇인가요?

我想大声告诉你我想大声告诉你2645일 전1187

모든 응답(2)나는 대답할 것이다

  • 黄舟

    黄舟2017-06-26 10:51:19

    源代码(人认识)->字节码(解释器认识)->机器码(硬件认识)
    来看下PHP的执行流程,假设有个a.php文件,不启用opacache的流程如下:
    a.php->经过zend编译->opcode->PHP解释器->机器码
    启用opacache的流程如下
    a.php->查找opacache缓存,如果没有则进行zend编译为opcode并缓存->opacode->PHP解释器->机器码
    启用jit的流程如下
    a.php->编译->机器码
    이제부터는 컴파일 없이 기계어 코드만 실행되므로 훨씬 더 효율적입니다

    회신하다
    0
  • 三叔

    三叔2017-06-26 10:51:19

    JIT의 개념은 실제로 Java에서 유래되었습니다. Java에서 JIT 컴파일러는 바이트코드를 기계어 코드로 컴파일하는 프로세스입니다.

    PHP와 Java가 매핑된다면 PHP를 OpCode로 컴파일하는 과정은 Java를 바이트코드로 컴파일하는 과정이고, 더 나아가 PHP의 JIT는 OpCode를 기계어 코드로 컴파일하는 과정입니다.

    좀 더 간단히 말하면, PHP 프로그램은 OpCode로 컴파일된 후 PHP 인터프리터에게 넘겨져 실행됩니다. 이 과정은 여전히 ​​해석과 실행의 과정입니다. 그리고 JIT를 통해 기계어로 컴파일하면 프로그램의 실행 효율성이 크게 향상될 수 있다.

    몇몇 널리 사용되는 스크립팅 언어에는 이미 자체 JIT가 있지만 PHP는 이러한 측면이 여전히 부족합니다. 그럼 기대하세요, PHP 8을 기대하세요

    회신하다
    0
  • 취소회신하다