프로그래밍 언어 성능 측정

Posted 2008.04.28 20:40
프로그래밍 언어의 특성 중 실용적인 관점에서 가장 중요한 요소 중 하나는 성능입니다. 요즘 동적 언어가 인기를 얻는 것을 보면 생산성이 성능보다 더 높은 점수를 얻고 있는 것 같긴 하지만, Python이나 Ruby를 .NET이나 JVM으로 포팅해서 HotSpot이나 JIT을 이용하려는 시도는 성능은 여전히 중요한 요소임을 반증합니다. (물론 .NET이나 JVM의 방대한 라이브러리를 재활용하고 다른 언어로 작성된 프레임워크를 사용하려는 목적도 큽니다.)

프로그래밍 언어 자체의 성능은 비교할 수가 없습니다. C 언어라도 컴파일러가 거지같으면 굉장히 느릴 수 있고, 옛날에 느리다고 욕먹던 Java도 근래 많은 최적화를 한 서버 JVM을 사용하면 C/C++과 유사한 정도로 성능이 올라가기도 하니깐요. 따라서 프로그래밍 언어 보다는 프로그래밍 언어의 구현을 놓고 성능을 비교해야 합니다.

그런데 벤치마크라는 게 컴파일러나 인터프리터 몇 개 갖다 놓으면 바로 비교가 되는 것이 아니고 또 별도의 벤치마크 프로그램을 통해 간접적으로 테스트해야만 합니다. 어떻게 벤치마크 할 것이냐를 놓고 이견이 많고 시끄러울 수밖에 없습니다. 어떤 언어는 과학 연산만 죽어라고 하는 벤치마크에는 매우 취약한 반면에 문자열 연산이 많은 벤치마크에는 좋은 성능을 보여줄 수도 있으니깐요.

어느 정도 신빙성이 있는지는 모르겠지만, Debian에서 프로그래밍 언어를 비교하는 벤치마크를 하나 제공하고 있습니다. The Computer LanguageBenchmarks Game인데, Gentoo나 Debian이 깔린 리눅스 머신에서 몇 가지 벤치마크의 성능을 순서대로 보여줍니다. 모든 벤치마크를 모든 언어에 대해 돌려보니, Java 6 -server의 성능이 인상적이고, 함수 언어인 Clean, Haskell GHC, OCaml 등도 상당히 좋네요.

  1. Favicon of http://blog.naver.com/smiler82 BlogIcon 서상원

    | 2008.04.29 10:16 | PERMALINK | EDIT | REPLY |

    와. Java 6 -server 가 좀 의외인데요... ㅎㅎㅎㅎ

  2. axis

    | 2008.05.06 16:20 | PERMALINK | EDIT | REPLY |

    Java 6의 경우 충분히 warming up을 한 상태에서 측정한 결과인지 좀 의심스럽네요. 아시다시피 HotSpot VM은 처음에는 인터프리터로 실행합니다. 충분하게 warming up만 하면 Java 6 -server의 순위가 더 올라가야 하지 않을지? java 6 -client랑 비교했을 때 별 차이가 안나는데 그걸 봐도 warming up이 좀 덜됐다는 생각을 하게 되네요.

  3. Favicon of https://skyul.tistory.com BlogIcon 서광열 lambda

    | 2008.05.13 04:16 신고 | PERMALINK | EDIT |

    그렇군요. 여기 나온 순위도 꽤 높다고 생각했었는데, 성능이 제가 생각하는 것보다는 훨씬 좋나 봅니다.

  4. axis

    | 2008.05.14 23:57 | PERMALINK | EDIT | REPLY |

    HotSpot VM은 현존하는 dynamic compiler 중 최고라고 해도 과언이 아닙니다. 심지어 특정 클래스의 서브클래스가 현재 없으면 그걸 고려해서 최적화하고는 추후 새로 클래스가 로드되어 그 가정이 깨지면 다시 최적화를 취소하는 등의 아주 공격적인 최적화를 합니다. .NET CLR도 아직 동등한 수준의 최적화를 하고 있지 못할 정도입니다.

  5. Favicon of http://skyul.tistory.com BlogIcon 서광열

    | 2008.05.22 03:57 | PERMALINK | EDIT |

    예전에는 메소드가 final일 경우만 (즉, 서브클래스가 오버라이드할 수 없을 때만) inlining 했던 것 같은데, 지금은 공격적으로 인라이닝하고 문제가 생기면 deoptimize하는 쪽으로 방향이 많이 바뀐 것 같군요.

    블로그 글이나 일부 white paper를 제외하고 paper를 찾기가 힘들던데, 혹시 dynamic compilation 관련한 paper 중에 읽을 만한 것은 뭐가 있을까요?

Write your message and submit
« PREV : 1 : ··· : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : 32 : ··· : 244 : NEXT »