지금까지 python과 C의 연산속도, I/O 비교, python의 컴파일러 버전별 성능 비교를 해봤습니다.

그럼 다시 원래 목적으로 돌아가서, 왜 C보다 100배나 느린 python을 사용하는 걸까요?

다음은 처음에 사용했던 fibonacci 수열을 찾는 프로그램입니다.

import time

def fibonacci(n):
    if n == 0 or n == 1:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)
t = time.time()
print fibonacci(35)
print 'Python Elapsed %.02f' % (time.time() - t)
 

python버전이고, 현재 제 PC에서 11초 정도가 걸립니다.
C로 짠 버전은 훨씬 빠르긴 하지만.. 35번째가 아니라 100번째라면 어마어마한 시간이 걸립니다.

하지만,

import time

previous = [1, 1]
def fibonacci(n):
    if len(previous) > n:
        return previous[n]
    else:
        new_value = fibonacci(n-1) + fibonacci(n-2)
        previous.append(new_value)
        return new_value
t = time.time()
print fibonacci(999)
print 'Python Elapsed %.02f' % (time.time() - t)
 

이 프로그램은 어떨까요?
999까지 구하도록 되어있지만, 0.0초에 끝납니다.
빠르다는 C도 아니고 python인데 말이죠.

그럼 이제 결론이 나오는것 같네요.

왜 C보다 훨씬 느린 python을 사용하는가?

같은 프로그램을 개발할때, 사용한 알고리즘에 따라 나오는 성능의 차이는 언어나 컴파일러의 차이를 뛰어넘을 정도로 클수도 있다고 생각합니다.

그렇다면 개발속도가 빠른 python을 사용해서 실제 코딩시간보다 프로그램에 대해 생각하는 시간을 늘리는건 어떨까요? 더 빠르고 안정적인 알고리즘으로 프로그램을 만들 수 있다면, C보다 더 효율적인 프로그래밍이 되지 않을까요?

솔직히 너무 뻔한 비교였습니다.
실제로 업무에서 fibonacci처럼 알고리즘에 따라 극적인 변화를 보이는 프로그램이 있을거라는 생각도 안들구요...

하지만, 개발속도의 차이와 프로그램의 구조와 알고리즘에 대한 더 많은 고민은 분명 더 좋은 프로그래밍으로 나아가는 발판이 될거라고 믿습니다. ^^;

신고
  1. Favicon of http://LazyDeveloper.net kkongchi 2007.02.28 14:25 신고

    실제로 특히 기업에서 사용하는 대규모 애플리케이션의 경우, 개발 생산성의 너무나 중요한 요소죠....글 잘 보고 갑니다. ^^

    • Favicon of http://hagun.tistory.com 하건 2007.03.02 16:34 신고

      감사합니다. ^^
      얼마전에 MS에서 세미나를 들은적이 있었는데,
      정말 언젠가는 개발자 없이 기획자만 남는게 아닌가 생각이 들 정도로 쉽게 생산할 수 있는 프레임웍들을 만들려고 하더군요.
      언젠가 밥 굶게 되는거 아닐까요? ;ㅂ;

  2. Favicon of http://moondding2.egloos.com/ moondding2 2008.03.14 21:29 신고

    절로~ 'Bravo'가 나오네요. ^-^

+ Recent posts

티스토리 툴바