PHP 와 PYTHON(파이썬) 파일 처리 속도 비교와 관련해서...

pokpungu의 이미지

PHP 와 PYTHON(파이썬) 파일 처리 속도 비교와 관련해서...
- 다음은 PHP 파일처리 소스 입니다. -
<?
$s = "Its power : Python developers ...\n";
$str = "";
for($i = 0 ; $i < 5000 ; $i++){
$str .= $s;
}
$stime = explode(" ", microtime());
$fp = fopen('phptest.txt', 'w');
for($i = 0 ; $i < 10000 ; $i++){
fwrite($fp, $str);
}
fclose($fp);

$etime = explode(" ", microtime());

$difftime = ($etime[1] - $stime[1])+($etime[0] - $stime[0]);
echo $difftime;
?>

- 다음은 PYTHON(파이썬) 파일처리 소스 입니다. -
import time

#s = "Its power : Python developers ...\n" * 5000
# List로 처리시 속도 향상
s = "Its power : Python developers ...\n"
data = []
for i range(5000)
data.append(s)
res = ''.jon(s)

stime = time.time()
f = file('pythontime.txt', 'w')
for i in range(10000):
f.write(s)
f.close()

#if = file('pythontime.txt', 'r')
#s = f.read()
#print s

etime = time.time()
difftime = etime-stime
print difftime

=================================================
걸린 시간을 종합한 결과
PHP => 5000만 : 42.285706 // 6000만 : 97.791048
Python => 5000만 : 59.0355567932

PHP => 5000만 : 53.72122
Python => 5000만 : 50.3546209335

PHP => 5000만 : 39.445857
Python => 5000만 : 42.9307050705

PHP => 5000만 : 46.374381
Python => 5000만 : 41.997191906

PHP => 5000만 : 52.638139
Python => 5000만 : 48.46905303

PHP => 5000만 : 40.829847
Python => 5000만 : 38.6273369789

PHP => 5000만 : 44.710715
Python => 5000만 : 46.5043540001

몇번 수행하지 않았지만 그래도 평균을 냈습니다.
평균 PHP=> 45.882525
PYTHON=> 46.90241078535

알고 있기로는 PYTHON이 처리 시간이 더 적다고 들었는데요
평균시간을 보면 PHP가 더 빠르게 나오네요!!
더욱이 PHP는 웹에서 수행했고 PYTHON의 경우는 linux(서버)에서 수행했습니다.
당연히 PYTHON이 빨리 나올거라고 생각했는데요!!

제가 무슨 잘못한 부분이 있나요???

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

range를 xrange로 바꿔보세요. range는 직접 리스트를 생성하기 때문에 오래 걸리지만, xrange는 시작/끝만 기억합니다.
뭐... 그리고 좀더 공정하게(?) 하려면 쓰는 파일 이름도 똑같이 해야겠죠.

pokpungu의 이미지

읔~ㅠ xrang 사용하고 나서 속도가 더 떨어지는 문제가 발생했습니다.

다른곳에도 모두 xrange 가 속도가 좋다고 나오는데요.. ㅜ_ㅜa

7339989b62a014c4ce6e31b3540bc7b5f06455024f22753f6235c935e8e5의 이미지

음, 그럼 아예 while 루프로 바꿔보세요. (평소에 쓸 일이 거의 없는 방법이라서 큰 의미는 없지만...)
근데 1초 정도 차이가 그렇게 크리티컬한가요? 그리고 PHP하고 파이썬이 돌아가는 서버가 같은거죠?

n = 0
while n < 10000:
  n += 1
  ...
송효진의 이미지

그냥 목적에 맞는 언어를 쓰면 되는것 아닐까요?
둘 다 너무 하드웨어에 깊이 들어가지 말고 편하게 쓰자고 나온 스크립트 언어인데...

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~

exman의 이미지

한 5년 전쯤 PHP, Java, Python, C++로 비슷한 테스트를 해보았었는데
뭐 테스트 조건에 차이도 좀 있었으리라 생각은 들지만
이상하게도 PHP가 제일 빨랐습니다.

chan77xx의 이미지

웹에서 많이 사용한다고 웹전용언어이고 파일처리는 다른 인터프리터에 비해 느리다고 볼수많은

PHP태생 자체가 서버스크립트라..

서지원의 이미지

테스트가 CPU bound인지 IO bound인지부터 살펴봐야겠지만, 일단은

w = f.write
for i in range(10000):
w(s)

라고 하면 빨라지긴 할겁니다.

그렇지만, 어차피 둘다 같은 시스템 콜을 쓸텐데, 거기서 파일 처리 속도를 비교하는 것 자체가 크게 의미없다고 생각됩니다. 게다가 IO bound일 가능성이 큰 테스트이기 때문에, 언어의 차이가 큰 영향이 있을지도 의문이고요..

디렉토리 구조나 - 보통 요즘 파일 시스템은 같은 디렉토리 안의 파일들은 같은 실린더에 넣는다고 하던데 - 디렉토리 안에 파일이 얼마나 있는지 등이 더 영향이 클 것 같습니다.

그리고 결과를 보면 평균의 차이보다 편차가 훨씬 큰 편이라서 (저는 통계학을 전공하거나 하지는 않았지만) 저 테스트를 가지고도 php가 python보다 빠르다고 말할 수는 없을 것 같습니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.