문제

데이터베이스 구동 웹 사이트를 구축합니다. 이전에는 MySQL과 함께 Perl 또는 PHP를 사용했습니다.

이제 나는 큰 새로운 프로젝트를 시작하고 있으며, 그 결과로 만들고 싶습니다. 가장 반응이 좋은 사이트.

PHP 최적화 방법에 대한 질문이 다양한 버전의 "해석 된 언어이기 때문에 PHP를 최적화하는 데 큰 도움이되지 않으며 그다지 큰 차이를 만들지 않을 것"이라고 비판하는 여러 페이지를 여기에서 보았습니다.

또한 이점에 대한 다양한 토론 (So Podcast의 So 팟 캐스트)을 들었습니다. 편집 된 언어와 해석 된 언어, 그리고 해석 된 언어 대신 사이트를 제공하기 위해 편집 된 언어를 사용하는 것이 내 관심사 인 것 같습니다.

웹 컨텍스트에서도 가능합니까? 그렇다면 합리적인 언어 선택은 무엇입니까?

속도가 속도가 높을뿐만 아니라 내가 예상 한 이점은 컴파일 시간에 버그를 찾습니다 웹 사이트를 디버깅하는 대신 이것이 합리적입니까?

도움이 되었습니까?

해결책

당신이 할 수있는 일은 여러 무거운 교통량 웹 사이트 (Facebook 또는 Twitter)가하는 일입니다. 일명 "CPU 소비"AlgoryThm을 C-Plugin에 작성하십시오.

예를 들어, 쓸 수 있습니다 PHP 확장 PHP를 사용하려는 경우 또는 a 루비 확장 Ruby / Ruby on Rails 등을 사용할 계획이라면

이렇게하면 간소화 코드를 간단하고 유지하기 쉽게 유지할 수 있습니다 (PHP가 아닌 C의 요청을 처리하기가 더 어려울 수 있음). 문제는 컴파일 시간입니다)

다른 팁

새로운 언어를 구축하려고한다면 ... 모든 의미론을 생각해 냈고 완전한 것이었고, 언어를 컴파일하는 것과 해석 된 사이에 전환이있는 마법 상자가 있으면 컴파일 된 버전이 더 빠를 것입니다. 해석 된 버전보다.

왜요? 왜냐하면 컴파일 시맨틱을 기계의 낮은 수준으로 낮추므로 훨씬 빠르게 실행할 수 있지만 통역 당신의 언어의 의미론은 일부에 의해 번역 될 것임을 의미합니다. 물건 (즉, 통역사) 사용자가 실제로 사이트를 사용하는 경우.

그렇다고해서 반드시 귀하의 사이트가 컴파일 된 언어와 해석 된 언어에서 100% 더 빨리 실행되는 것은 아닙니다. 오늘날 다양한 언어 (IE PHP)에 대해 매우 빠른 통역사가 있으며, 해석 된 언어를위한 최적화조차도 여전히 빠르게 만들어줍니다.

당신이 선택한 언어의 불가지론적인 사이트의 성능에 들어가는 다른 많은 것들이 있습니다. 하드웨어 설정, 데이터베이스 설정, 네트워크 토폴로지 등. 이러한 것들이 더 큰 영향을 줄 수 있습니다. 확실히 측정하는 것이 좋습니다.

나에게는 컴파일 시간에 버그를 찾는 것이 거대한 시간 절약, 따라서 강하게 입력 한 컴파일 된 언어를 선호하는 경향이 있습니다. 그것은 내 일을 더 빨리 끝내게 할 수 있지만, 그것이 객관적으로 최선의 선택이되지는 않습니다. 어떤 사람들은 약하게 입력 한 코드를 작성하고 테스트 스위트를 실행하여 기능을 확인하는 데 문제가 없습니다.

IMHO 수집 된 언어를 사용하여 복잡한 웹 앱을 작성하는 것은 상당히 감각적이지 않습니다. 수많은 관리 가능성 문제에 대한 이점을 제공하지 않기 때문입니다.

언어 수준과 시스템 수준에서 스크립트 된 언어로 성과와 확장 성을 높이는 방법이 많이 있으며, 결국에는 전적으로 영향력있는 언어로 사소한 성능을 얻을 수 있습니다.

다른 한편으로는 민첩한 개발 및 버그 사냥 스키마를 따라 코드를 변경하고 결과를 보는 것이 매우 유용하다고 생각합니다.

Perl은 해석 된 언어가 아닙니다. 바이트 코드로 컴파일되므로 Perl 실행 파일이 시작될 때만 해석 가격을 지불합니다. 따라서 Apache와 함께 사용할 때는 CGI를 사용하지 말고 mod_perl을 사용하지 마십시오.

당신이 무엇을 하든지, 웹 프로그래밍에 적합하지 않은 언어를 선택하거나 필요한 일을 지원할 수있는 좋은 라이브러리가없는 경우 개발 시간은 아마도 응답 시간을 초과 할 것입니다. 예를 들어 나는 C 또는 C ++를 선택하지 않을 것입니다. 당신은 물집이 없지만 버기가 빠르고 6 개월 늦은 웹 앱을 원하지 않습니다.

수코양이 컴파일 된 언어를 사용하여 웹 페이지를 배포하는 일반적인 방법이지만 너무 멀리 가기 전에 진지하게 고려하십시오. 당신의 속도 병목 현상이 무엇인지. 웹 응용 프로그램에는 몇 가지 주요 둔화 소스가 있습니다.

  1. 네트워크 대기 시간
  2. 정적 미디어, 특히 이미지
  3. 데이터베이스 쿼리
  4. 서버 측 처리 코드
  5. 클라이언트 측 처리 코드

1과 5는 실제로이 질문과 관련이 없습니다.

2 페이지마다 다른 이미지가있는 경우 2는 관련이 있습니다. 이 경우 클라이언트 브라우저는 좋은 작업을 수행하지 않으며 각 페이지로드에는 시간이 걸립니다. 이 경우 정적 미디어의 오버 헤드가 지배적이기 때문에 서버 측 언어가 눈치 채지 못할 가능성이 높습니다.

3은 많은 응용 분야에서 4보다 더 큰 요소 일 가능성이 높습니다. 데이터가 거의 없지만 많은 처리를 수행하면 4가 지배 할 수 있지만 해석 된 언어를 사용하더라도 3이 지배적입니다.

사람들은 "왜 PHP 최적화?"라고 물을 수 있습니다. 어쨌든 2와 3은 종종 더 중요하기 때문입니다. 종종, 좋은 데이터베이스 캐싱 프레임 워크 더 나은 (그리고 쉬운) 최적화가 될 것입니다.

웹 응용 프로그램에 들어가는 부분이 많이 있습니다. 애플리케이션 계층에서 취한 시간은 크지 않아도됩니다. 일반적인 응용 프로그램의 경우 가장 큰 돼지는 웹 서버와 데이터베이스에 있습니다. PHP를 바이너리 CGI로 교체해도 이것을 변경하지는 않습니다.

또한, PHP의 해석 된 부분은 다소 느릴 수 있지만, 이는 PHP 스크립트 실행에서 진행되는 것의 작은 부분 일뿐입니다. 언어의 일부로 제공되는 모든 기능은 기본 코드로 구현됩니다. 예를 들어, 같은 함수를 호출 할 때 preg_match, 그것은 기본 코드 라이브러리를 부르고 작업을 수행하게합니다. 이것은 당신이 생각하는 것보다 실제 해석이 적다는 것을 의미합니다.

PHP와 다른 언어를 사용하는 것이 가치가있는 경우가있을 수 있지만 특별한 경우입니다. 일반적으로 여기서 얻을 수있는 것은 없습니다.

네트워크의 대기 시간은이 주장에서 가장 큰 결정 요인입니다. 실제로, 네트워크 대기 시간은 너무 많은 요인이므로 성능 문제에서 언어 고려 사항을 다소 중요하지 않습니다. 그러니 ... 당신이 아는 것과 함께 가십시오. 가장 편안하고 생산적인 언어를 사용하여 다른 고려 사항을 수행 할 수 있습니다. 자, 즉, 새로운 것을 시도하고 새로운 것을 배우는 것은 항상 재미있는 일이 될 수 있습니다. 따라서 프로젝트가 당신이 실험 할 수있는 기회를 허용하는 개인적인 것이라면 .....

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