C-FastCGI vs PHP vs Perl-CGI 벤치마크한거 어디 없을까요?

puaxx의 이미지

속도차이가 어느정도 나는지 궁금한데...어디 보기쉽게 벤치마크 잘정리된곳 없을까요?

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

뭐... 당연히 쓰신 순서대로 빠를 것 같긴 합니다만 =3
PHP도 mod_php 대신 FastCGI로 쓸 수 있는건 아실겁니다.
펄도 mod_perl이나 FastCGI를 사용할 수 있구요.
그러나 벤치마킹 자료는 잘 모르겠네요...

익명사용자의 이미지

c는 논외로 하고 mod_php와 php with FastCGI는 거의 비슷하다고 하지만, perl인 경우는 FastCGI를 쓰면 엄청난 향상이 있다고 알고있습니다.

puaxx의 이미지

저도 그건 아는데..정작 궁금한 주체는 C-FastCGI 조합이여서요...ㅜ,ㅜ

익명사용자의 이미지

딴지는 아니고 그냥 제 소견입니다만..
요즘에 과연 cgi방식을 사용해서 얻는 장점이 있는지..
그리고 단순한 속도 벤치마킹이 무슨 의미를 가질런지도 의문입니다.

puaxx의 이미지

뭐 CGI방식이라면 비용이 엄청나기 때문에 이득이 있을지 모르겠습니다만.FastCGI방식이라면 이득이 있을것 같습니다.제가 알고 싶은건 FastCGI상에서 속도 이득이 월등한건지 그렇지 않은지 알고 싶네요.

절실히 알고 싶은것 -> C/FastCGI vs PHP

하긴 PHP와같이 잘구축되고 많은 확장된 함수를 가지고 있는것을 두고 굳이 C/FastCGI조합을 시도 하려는 제가 좀 무모해 보이기도 하는군요.(누가 좀 말려주세요.)

소타의 이미지

C/FastCGI는 거의 어플리케이션 서버라고 봐야합니다..
C/FastCGI 정도 구현하실 수 있으면 서버데몬까지 만드시고 PHP로 소켓 통신만 하셔도 될 것 같은데요?
속도 때문이라면 차라리 이 방법을 권해드리고 싶네요 -.-;

최고의 성능을 위한 방법은 웹서버부터 다 새로 맹그시는 겁니다 ㅋㅋㅋ
아파치가 얼마나 느린지 아실 수 있습니다(물론 기능은 백배천배 많고 안정적이고 여러 플랫폼 지원하고 등등;;)

puaxx의 이미지

물론 그러하겠지요..하지만 제가 말씀드린 비교 주체는 PHP와 C-FastCGI입니다.

wish의 이미지

직접 해 보지는 않았지만, 개념적으로는 c-fastcgi 가 php 보다는 훨씬 빠를 겁니다. 물론 구현이 잘 되 있다는 가정하에서요. php도 캐싱을 하긴 하지만 기본적으로 동적 스크립트 언어기 때문에 실행속도 자체는 c보다 빠를 수가 없다고 봅니다. 다만 fastcgi 를 C 로 만드는게 굉장히 복잡하고 유지 보수 하기는 쉽지 않을 것입니다.

그리고 아파치 내에서 해결하는 더 빠른 방법이 있습니다. 굳이 fastcgi 까지 갈 것도 없이, 직접 아파치 모듈로 애플리케이션을 짜셔서 올리신다면 구현을 어느정도 잘 하신다는 전제하에 빠르실 겁니다.

그리고 소타님 말씀대로 웹 서버를 처음부터 짜는 것도 방법입니다 ;

ps : c/fastcgi 와 php 로 똑같은 기능을 하는 웹페이지를 만들고 성능 테스트 해보세요. 그리고 코드 량도 비교해보시구요 ^^;;

puaxx의 이미지

논외지만 apache모듈로 올릴경우 속도는 빠르겠지만, 언어 종속적, 서버종속적이게 된다는 단점이 있다고 하네요. 그리고 프로그램이 buggy할 경우 서버에 치명적일수도 있구요.

wish의 이미지

일반적으로 그렇습니다. 거의 대부분의 경우 성능이 좋으면, 이식성은 떨어집니다. 무슨 방식이든 댓가는 따르기 마련입니다. 안전하고 이식성이 좋기로는 python나 펄 정도의 cgi 가 당연히 좋겠죠. 그리고 당연한 말이지만 씨로 짜면 CGI 든 FastCGI 든 플랫폼 종속적입니다. fastcgi 도 cgi 에 비해서 플랫폼 종속적이구요. IPC 의 형식이 다른 플랫폼이 있을 수도 있으니. 이것 저것 다 만족 시키는 해결책은 없습니다. 개인적으로 님한테는 모듈을 하시든, fastcgi 를 하시든 php 가 가장 나으실 듯 합니다.

puaxx의 이미지

제가 알기론 C가 이식성이 좋은것으로 알고 있는데 플랫폼 종속적이란 말은 처음듣네요...

dormael의 이미지

언어 자체의 이식성이 아닌 C로 만든 대부분의 코드의 이식성에 대한 이야기가 아닐까요?

-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.

puaxx의 이미지

좀 풀어서 설명을 해주세요 ㅜㅜ

dormael의 이미지

저도 그냥 저의 느낌을 추상적으로 말한거라 정확히 말씀드리긴 어렵네요.

뭐, 다른 언어도 마찬가지 이지만 특히 C의 경우는 역사도 오래된 편이고 그에 따른 legacy들이 있는 상황에서 대부분 코드들이 정확한 포터빌러티를 가지기가 쉽지 않을꺼라는 생각하에서 말한겁니다.

어차피 제가 말씀드리는건 '언어'자체가 아니라 언어를 이용해 개발자가 만든 코드가 표준이 지향하는 포터빌러티를 따라가지 못하는 현실적인 부분에 대한 이야기 입니다.
보통 C언어의 이식성이 좋다고 볼때는 '언어'나 '표준'에 대한 관점이 강한것 같고 그 반대로 볼때는 실제 코드를 보는 관점이 강한것 같다는 저의 선입견이 전제된 발언이었습니다.

-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.

wish의 이미지

C 가 어셈블러 보다는 이식성이 좋고 플랫폼 독립적이겠죠. 어셈블러는 기계어보다 이식성이 좋을 것이구요.

이식성이란 것은 한번 만들어서 얼마나 수정 없이 다시 쓸 수 있느냐겠고, 플랫폼 종속성은 플랫폼 별로 수정이 없거나 최소화 되느냐에 달려 있을 것입니다. 그런 의미에서 C 는 소스코드 수준에서 수정을 최소화해서 다른 플랫폼에 쓸 수 있는 경우가 많으니 모든 것을 새롭게 고쳐야 하는 어셈블러보다 이식성이 좋고 플랫폼 독립적이긴 합니다만, 여전히 소스 코드를 짤 때 플랫폼을 염두에 두어야 합니다. 더구나 C로 만들어진 프로그램은 일단 한 번 컴파일을 거쳐야 하고, 생성된 바이너리는 특정 플랫폼에서 밖에 사용할 수 없습니다. C로 짜여진 프로그램을 컴파일해서 나오는 산출물이 네이티브 기계어 이기 때문입니다. 씨로 짜여진 프로그램을 다른 플랫폼으로 옮기려면 소스 코드 단에서 수정해야 되는 경우가 많습니다.

그에 반해 python 이나 php 와 같은 스크립트 언어는 소스코드를 그대로 가져다 실행시키면 됩니다. 프로그램을 짤 때도 특정 플랫폼을 덜 신경쓰고 짤 수 있습니다. 플랫폼을 옮길 때도 소스 코드에 변형이 거의 없고 있더라도 훨씬 적습니다. 그만큼 플랫폼에 독립적이고 이식성도 당연히 더 좋다고 할 수 있겠습니다.

모든 것이 어셈으로 짜여지던 시절에 씨는 분명히 이식성도 좋고 플랫폼 독립적인 언어였겠지만, 현대와 같이 스크립트 언어가 발전하고 VM 이 대세가 되는 추세에서 C 를 이식성과 플랫폼 독립성이 강한 언어라고 보기에는 힘들 듯 합니다.

1day1의 이미지

apache module 과 함께 php extension 도 같이 고려해보는 것이 좋지 않을까요?

F/OSS 가 함께하길.. (F/OSS서포터즈 : [[FOSS/Supporters]], [[FOSS/Supporters/Group]]) - 블로그 활성화 프로젝트 : 하루에 하나씩 블로그 글 남기기 -

F/OSS 가 함께하길..

woonuk의 이미지

lighttpd + FastCGI 구성도 좋지않습니까?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.