문제

현재 다른 사이트를 재사용 할 계획이없는 매우 큰 프로젝트에서 사이트 이름을 어디에서나 파일에 하드 코딩했습니다. 이제 사이트 이름을 변경하려면 모든 곳을 바꾸려면 많은 노력이 필요합니다. 명백한 해결책은 이름을 변수 또는 상수로 저장하는 것이지만, 미세 최적화하는 사고 방식이라고 부를 수 있다고 생각합니다. 저는 항상 PHP가 구문 분석해야 할 것이 더 적다는 것을 알았습니다. 나는 그것이 큰 차이를 만들지 않을 것이라는 것을 알고 있지만, APC와 같은 Opcode 캐시를 사용하는 것이 PHP가 그것을 재발 할 필요조차 없다는 것을 알고 싶습니까?

도움이 되었습니까?

해결책

정말 : 당신은 그런 것에 대해 신경 쓰지 않아야합니다.

구성의 차이는 의미합니다 많이 더 많은 차이 (예를 들어, apc.stat APC의 경우 옵션은 서버로드에 상당히 영향을 줄 수 있으며 DB 쿼리와 같은 것은 수백 번 더 많은 영향을 미칩니다).

여기서 중요한 것은 주인공입니다.

  • 그것은 당신에게 어떤 혜택을 얻습니까? (그 나노 최적화를 제외하고) 사이트 이름이 하드 코딩되지 않으려면?
  • 하드 코딩 된 이점을 얻을 수 있습니까? (동일한 예외) ?

두 경우 모두 대답이 "아니오"이고 응용 프로그램이 작동한다면 ... 글쎄요, 그게 중요합니다!


마이크로 최적화보다 적은 종류의 마이크로 최적화로 소비 할 시간이 있다면, 프로파일 러를 사용하여 응용 프로그램 코드를 통해 DB 쿼리를 거쳐 정적 JS/CSS를 가져 오기 위해 수행하는 HTTP 요청의 수 /이미지, PHP 업그레이드 또는 코드 수정하여 PHP 5.3에서 실행할 수 있도록 코드 수정 (PHP 5.3은 5.2 이상의 최적화와 함께 제공됩니다), ...

그 모든 사람들은 아마도 아마도 당신에게 더 높은 이익을 얻을 것입니다 ;-)


댓글 후 편집 :

기본적으로 PHP 파일이로드 된 경우 :

  • 파일은 디스크에서 읽습니다
  • 그것은 구문 분석되어 Opcode에 편집되었습니다
  • opcode가 실행됩니다

Opcode 캐시로 :

  • Opcode가 포함 된 RAM에 위치가있는 경우 RAM에서로드됩니다 (파일을 읽지 않거나 구문 분석/컴파일)
    • 그렇지 않은 경우 이전 단계를 확인하십시오. 다음 요청을 위해 실행하기 전에 "Opcodes를 RAM에 저장"하기 만하면됩니다.
  • 그리고 opcodes가 실행됩니다

그만큼 apc.stat 옵션은 APC가 RAM의 Opcodes를 사용하는 것 사이를 결정하거나 RAM의 Opcodes보다 더 최근에 파일을 다시 컴파일하는 파일의 마지막 수정 날짜/시간을 검사 해야하는지 정의합니다.

이 옵션을 비활성화하는 것은 다음을 의미합니다.

  • 파일은 디스크에서 점검되지 않으며 더 빠르게 자원을 사용합니다.
    • 예를 들어, 상당히로드 된 서버 에서이 옵션을 비활성화 할 때 CPU-로드 한 낙하가 10 ~ 15%로 나타났습니다.
  • 그러나 수정 사항을 확인하지 않으므로 수정을 고려하려면 캐시를 지워야합니다.


그래도 내가 말한 것은 사실입니다 : 아마 많이 최적화 할 수있는 것 중 하나는 단순한 "하드 코딩 된 값"대 "상수/변수를 사용하는 경우"를 사용해야하는 것보다 더 중요한 이득을 의미합니다.

다른 팁

이것은 와트입니다. 정확히 발생합니다. 토큰 레벨 세부 사항에 가지 않고 ...

PHP는 스크립팅 언어로 대부분의 사람들이 편집되지 않았 음을 의미합니다. 우리가 GCC 나 Javac을 부르지 않는다는 점에서 이것은 전통적인 의미에서 사실입니다. 대신 스크립트가 요청 될 때마다 컴파일하고 있습니다. 실제로 PHP 및 Java 컴파일 라이프 사이클은 가상 머신 (Zend VM 또는 JVM)에서 실행되는 중개 명령 세트 (Opcodes 또는 Bytecodes)로 컴파일하기 때문에 상당히 유사합니다.

enter image description here

구문 분석 및 편집 단계는 느립니다. Opcache를 추가 할 때 구문 분석 및 컴파일 단계의 결과를 저장 하여이 프로세스를 단락시켜 항상 동적으로 실행되도록 실행 만 남습니다. 사실상, 우리는 지금 Java 수명주기에 더 가깝습니다. 주요 차이점은 파일 대신 공유 메모리에 저장되었으며 스크립트에 변경 사항이 발생하면 자동으로 다시 컴파일 할 수 있다는 것입니다.

enter image description here

Opcode 캐시를 사용하십시오. 그것은 마이크로 최적화보다 더 많은 성능 향상을 줄 것입니다. 또한 Zend Opcache를 사용할 때 많은 최적화가 수행됩니다 (예 : 리턴 값이 사용되지 않을 때 $ i ++로 ++ $ i를 전환합니다).

Opcode 캐시를 사용하는 것은 더 이상 선택 사항이되어서는 안되므로 거의 노력하지 않고 하드웨어에서 더 많은 성능을 얻을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top