지난 글에서 피보나찌 수열을 이용해 Python과 C, Java의 간단한 성능 테스트를 해봤습니다.

생각보다 큰 차이에 놀라긴했지만, 실제로 업무에서 시간이 오래 걸리는 부분은 python의 연산 부분보다는 FILE I/O가 아닐까해서 다시 테스트를 해봤습니다.

먼저 간단히 python의 readline/writeline을 이용해 file을 읽고 쓰는 프로그램과
C로 fgets를 사용하는 프로그램을 만들어서 비교해봤습니다.

약 3배의 차이가 나는데... 아무래도 찜찜하더군요.

python의 readline이 확실히 더 많은 연산량을 가진 method이기 때문에 정확한 비교가 안되는것 같아서 python도 read(1)/write(1)만 사용하고 C도 fgetc만 사용해서 만들어봤습니다.

python : 평균 5.6초
C(fgetc) : 평균 5.1초
C(fgets) : 평균 1.8초

C가 약간 빠르긴 하지만 이정도 차이라면 굳이 python을 기피할 이유는 없어보입니다. :)

text file 10000개를 열어서 복사하는 테스트도 해봤는데, 역시 큰 차이는 없더군요.

역시 file I/O는 언어의 차이에 따라 큰 변화가 없는것 같아서 더이상 테스트를 해보지 않았습니다.


다음은 python compiler에 따른 성능을 비교해보겠습니다. ^^

컴파일러가 달라지면 같은 프로그램이라도 상당히 최적화 된다는 게 생각나서 python의 버전별로 같은 프로그램을 돌려봤습니다.

사용한 컴파일러는 윈도우용 python 2.3과 2.5 버전입니다.

10000개의 file을 readlines, writelines를 이용해 복사한 경우
2.5는 평균 79초, 2.3도 평균 79초 정도로 역시 file I/O의 경우 거의 같은 성능을 보여줬습니다.

그래서, 처음 C와 성능비교를 위해 사용했던 fibonacci 프로그램을 돌려봤습니다.

35까지 돌릴경우
2.5 : 평균 20초
2.3 : 평균 29초

40까지 돌릴경우
2.5 : 평균 215초
2.3 : 평균 315초

와, 이건 꽤 많은 차이가 나는군요! +_+
참고로, 리눅스용 python도 마찬가지로 2.5버전이 더 빨랐습니다.

300000까지 배열을 만드는 간단한 프로그램을 돌려봐도 2.5는 0.73초, 2.3은 1.48초로 확실히 다른 결과가 나왔습니다.

이거... 컴파일러의 차이가 생각보다 큰 결과로 나타나는군요.

하지만 파이썬을 사용하는 근본적인 이유는 뭘까요?
왜 C보다 100배 느린 python을 사용할까요?

다음 글에서는 제가 생각하는 python을 사용하는 이유를 적어보겠습니다. ^^

신고

+ Recent posts

티스토리 툴바