예전에 7.4에서 8.0으로 갈때 분명히 "빨라진다"라는 말을 들었던 기억이 있는데, 지금와서 하는 말이 "거짓말였어~ 8.0은 빨라진 것이 아니고, 이번 8.1이 빨라진 것이다. 이번에는 진짜다. 믿어주세요" 이러고 있네요.  (https://www.php.net/releases/8.1/en.php)

 

 

php 8.png.jpg

 

예상외로 Jit compiler가 역할을 못하네요. 극단적 벤치마크에서조차 jit 쓰는 것과 안쓰는 것이 1.13% 차이뿐이 안나는데 현실에서는 전혀 없을 듯 합니다. 8.1에서 바뀐 것이, 속도향상, ARM cpu에서 jit 컴파일러 지원 등인데 말이죠.

  • profile
    JIT를 활성화할 함수를 선택할 수 있으면 좋을것 같은데 말이죠. PHP8.0 에서 도입된 Attribute 같은걸로 포인팅해서 핫코드를 집어줄 수 있으면, 좀 더 효율적인 캐싱이 가능하지 않을까 싶은데... 어차피 실서비스에서는 핫코드가 많지도 않으니까요.

    개인적으론 JIT나 속도향상보다는 Fiber 같은 친구들이 더 기대가 됐었습니다. 이제야 좀 점유율 상위권 언어다워지는구나 싶어서요ㅋㅋ;
  • profile profile
    오호~. php가 이젠 스레드도 만들수 있게되었군요.
  • profile ?

    PHP 8.1은 JIT 보다 클래스 링킹과정을 한번만하게 바뀌어서 성능향상이 있죠
    그래서 워드프레스같은 클래스 안쓰는 코드들은 성능향상 거의없는...
    그누나 라이믹스도 그렇겠죠?

     

    라라벨/심포니는 성능 20%향상

  • ? profile

    정보 감사합니다. 그런 사연이 있었군요~. 콕 찝어 말해주니까 이해가 쉽게됩니다~ㅎ.

  • profile

    라이믹스 돌려보시고 에러 있으면 제보해 주세요.^^

  • profile profile

    실사이트 몇개에 적용해봤는데, 특별히 에러가 뜨거나 하지는 않네요 (아직 발견 못한 것일수도).
    그런데 jit 적용하면 오히려 느려지는 기분이 드네요 ㅎㅎ.

    DEBUG패널에 표시되는 Total Time: 기준으로 조금(10%) 늘어납니다.

  • ?
    그러고보니 CentOS 7.x 일부 환경에서 VestaCP 설치하면 버전이 PHP8.1RC? 로 되어있긴 했었네요.
  • ? profile
    RC를 자동으로 깔아주다니... 너무 과잉 친철한 것 아닌가요? ㅎㅎ
  • profile ?
    정확한 이유는 모르겠는데 remi 를 끼워넣어서 그런거 같기도 하네요
  • ? profile

    그럴수도 있겠네요. 뭔가 dependency가 있는 것이 깔리면서 같이 따라왔을수도 있겠네요. Ubuntu에서도 php8.1을 설치하니까 apache2가 자동으로 깔려서, 삭제하면서 dependency 있는것 지워주려고 autoremove하니까, 친절하게 phpmyadmin까지 자동으로 지워주더군요. 그러면서 mcrypt (openssl 있어서 필요 없기는 하지만) 까지도 덩달아 삭제해주는...

  • profile
    rhymix_version : 2.0.16
    date : 2021-11-29 16:56:13 +0900 (2021-11-29 07:56:13 UTC)
    php : 8.1.0 (64-bit)
    server : Microsoft-IIS/10.0
    os : Windows NT 10.0

    opcache.enable=1
    opcache.jit_buffer_size=100M
    opcache.jit=tracing <== functon 으로 하니 잘되는데 .. tracing으로 하면 500에러남!!!

    supercache 에서 memcache 8.1을 사용해도 비슷한것 같은데 ..

    supercache 모듈에서 memcache 사용을 default 해도 될까요?
  • profile profile

    jit=tracing으로 하면 function보다 범위를 더 넓혀 최적화를 시도하는 것이니까, 그 과정에서 오류가 생기나보네요. opcache (+jit)는 인스트럭션 캐시이고, apcu나 memcached는 데이터 캐시이니까 아무렇게나 조합해서 사용해도 잘 되어야 정상이지 않을까요... 

    Jit 컴파일러가 아직 버그가 많고, 벤치마크해서 올린 리뷰들 보니까, 성능향상도 동접자가 아주 많은 상황에서만 쬐끔 효과를 내는 것 같고, 동접자가 적은 경우에는 오히려 역효과 나는 것 같더군요.

  • profile profile
    jit + memcache 조합이 빠르긴 빠르네요 ... jit 단독으로 쓰면 첨 딜레이가 걸리긴 하는데 ...멤캐쉬를 붙히니 딜레이가 사라집니다. tracing 모드 보단 function 모드로 하니 오류는 없어서 좋네요.
  • profile

    어.. 그럼실제 php8.1의 속도향상이 없으니
    호환성 좋은 7버전대 쓰면 되는건가요

    개인적인 느낌이긴 합니다만 기존에 7에서 쓰던 라이믹스 사이트 8.1로 바꾸고서

    약 2배정도 속도향상된 체감이 들었습니다. 7때는 조금 더디게 뜨던게 거의 1초안에 팟팟 뜨더군요

     

    그럼에도 기존 자료들이 호환성때문에 사용을 못하다보니 다시 7로 내릴까 고민중입니다.