.NET, J2EE 대비 28배 성능?

유진호의 이미지

MSDN online에 올라온 내용입니다. 자세한 내용은 관련 링크를 참조하십시오.

"이 연구는 Sun의 대표적인 J2EE 애플리케이션인 Java Pet Store의 성능과 확장성을 Microsoft .NET Pet Shop 애플리케이션의 성능 및 확장성과 비교하고 있다. Java Pet Store는 Sun Microsystem이 주로 인용하는 J2EE 애플리케이션으로 http://java.Sun.com/j2ee/blueprints 에 공개되어 있다. 이 애플리케이션은 J2EE 최상의 프로그래밍 관행과 엔터프라이즈 애플리케이션을 구축할 수 있는 J2EE의 주요 기능을 설명하고 있다. Microsoft .NET Pet Shop은 Microsoft .NET 플랫폼 상에서 이 애플리케이션을 구현하여 동일한 기능을 제공하는 것으로, .NET에서의 최상의 코딩관행을 설명하고 있다. .NET Pet Shop 애플리케이션에 대한 더 자세한 정보는 'Implementing Sun Microsystem's Java Pet Store J2EE Blueprint Application using Microsoft .NET' 이라는 기술백서에서 확인할 수 있으며, 기술문서와 소스코드는 http://www.gotdotnet.com/compare 에서 다운로드받을 수 있다.

목차
서론
Oracle의 J2EE 테스트에 대한 설명
새로운 기능 및 향상된 기능
HR 데이터베이스에서 조직도 만들기
클라이언트 에뮬레이션
테스트 실행
튜닝
하드웨어와 소프트웨어 구성
작업부하에 대한 설명
Dynamic Output Caching
참조
별첨 1: .NET 튜닝

서론
이 연구에서, Sun의 대표적인 J2EE 애플리케이션인...."

과연 MS를 믿을 수 있을라나..... --;

* 관리자 코멘트(webmaster):
벤치마크는 수행 환경에 따라 그 결과가 천양지차겠죠. 이러한 결과를 얻기 위해 MS가 많은 노력을 했을테니 이 테스트에서 얻어진 수치 자체보다는 .NET과 J2EE를 가지고 어떻게 최적화시킬 수 있을 것인지에 대해 이야기해 보는 것이 좋겠습니다.

익명 사용자의 이미지

"In the computer industry, there are three kinds of
lies: lies, damn lies, and benchmarks."

from Hacker's Jargon File
http://www.tuxedo.org/~esr/jargon/html/entry/benchmark.html

kkung_의 이미지

만약,
이 반대의 벤치마크가 나왔다면 어떻게 되었을지
사뭇 궁금해집니다.
이렇게 큰 논쟁이 있었을까요?
MS 가 비록 좀 못된짓을 많이 하긴 하지만,
무조건 않좋은 시각으로 보는건 문제가 있다고
생각합니다.
그리고.. 자바의 경우 vm 만 있으면
어디서든 돌아간다는건 좀 환상 아닐까요?
복잡하게. 깊게 들어갈수록 플랫폼 중속적
성향을 뛰게 될수밖에 없다고
어디서 읽은 기억이 나는군요.

아무튼, 다시 생각해볼 문제 아닐까 합니다

우겨_의 이미지

기업은 자신들에게 유리한 결과 위주로 광고에 이용합니다.

따라서 반대의 결과가 나오면 광고에 활용하지 않았을 것입니다.

무조건 않좋은 시각으로 보는 것이 아니죠. 광고를 광고로 볼뿐입니다.

익명 사용자의 이미지

요점은 J2EE가 빠른지 .NET이 빠른지가 아닙니다.
또 그런식의 벤치마크로는 성능테스트를 제대로 할 수 없습니다.

문제는 MS가 악의적으로 조작된 벤치마크 결과를 이용해 관리자
들이나 초보 개발자를 현혼하고 있다는데 있습니다.

벤치마크의 문제점에 대한 내용은 아래 보다 자세하게 나와
있으니 참조하시기 바랍니다.

익명 사용자의 이미지

하드웨어가 아니라... 자바에 종속된다는거 아닐까요???
닷넷에선 닷넷 프레임웍을 통해 그걸 해결한다(언어에 상관없이 닷넷 규약만 지키면..)

헌데 닷넷은 결국 C#을 심중에 두고 시작했다는 느낌입니다.
결국 닷넷은 MS에 종속을 불러 오겟죠....

-영희-

우겨_의 이미지

지극히 정상적인 자사광고일 뿐이죠.
"맛의 천하통일"이라는 오뎅집광고처럼 광고일 뿐입니다.

그걸 사실로 받아들이는 사람들이 이상한 거죠.

그러나, MS의 광고 한마디 한마디에 흥분하는 초보개발자들이나 입문자들에게는 광고일뿐이라는 것을 알려줘야 할것 같네요.

익명 사용자의 이미지

이 글 쓴 사람의 의도가 뭘까? :)

익명 사용자의 이미지

글쓴 사람입니다. 어이 없어서 올린겁니다. T_T 우연히 들어갔다가 이런 기사 보고
무슨 일인가 안했겠습니까? MS란.... --;

익명 사용자의 이미지

단순 광고를 사실로 받아 들이시는 것이 이상하네요...

익명 사용자의 이미지

핵심을 비켜나간 실험입니다. 우선 C#으로 작성된 .NET으로 작성된 어플이 과연 WINDOWS말고 다른 곳에서도 실행되느냐를 따져야 할 것입니다.

.NET이란 MS가 이미 VISULAL JAVA에서 선보였듯이플랫폼 독립성을 가장한 WINDOWS APPLICATION일 뿐입니다. 근본적으로 WINDOWS API를 호출하는 프로그램이 WINDOWS 이외의 환경에서 실행될 가능성은 0에 가까우니까요. 이런 경우에 속도가 중요하다면 차라리 "C나 ASSEMBLY"를 사용하십시오. 자바의 강점은 VM이 설치된 곳이면 어디이든지 동일한 방식으로 실행된다는 것이지 속도가 아닙니다.
속도가 문제였다면 이미 예전에 자바는 사라졌을 것입니다. C#과 .NET은 자바가 시장을 휩쓸면서 개발자를 몰아가니까 MS에서 개발자를 빼앗기지 않기 위한 궁여지책에서 나온 사기극일 뿐입다.다.

익명 사용자의 이미지

지나치게 MS에 적대적이란 생각이 드는군요. 닷넷은 에시당초 플랫폼 독립성을 가장하지 않았습니다. 언어 독립성을 주장했고 그걸 훌륭히 실현했죠. 윈도우 환경에서 대결을 벌이는 것은 당연하다고 봅니다. 그리고, 속도가 중요하다면 C나 ASSEMBLY를 사용하라는 건 엔터프라이즈 어플리케이션에 대한 개념이 없는 생각 같군요. 그리고 자바의 장점은 플랫폼 독립성 뿐만이 아닙니다. 일정 수준 이상의 복잡도를 필요로 하는 엔터프라이즈 솔루션에서 고급 언어로 충분한 수준의 속도를 제공한다는 것도 강점이죠. 그리고 플랫폼 독립성은 장점 만은 결코 아닙니다. Java is not platform free, Java is a platform. 이란 말도 있죠. 서버 사이드 자바와 클라이언트 사이드 자바에서 플랫폼 독립성의 의미, 속도의 의미는 완전히 다릅니다.
그리고 C#은 몰라도 .NET은 자바 초창기부터 MS가 준비해왔던 겁니다. 언제까지 MS 욕만 하고 살 겁니까? 이제 지겹지도 않습니까?

익명 사용자의 이미지

클클 님 그런 흥분은 애써 광고일 뿐이다라고 내용을 평가절하하는 분들에게도 똑같이 한번 해주시져..

님의 글에서도 나타나듯이 모든 평가는 시각을 조금만 달리하면 그 평가의 가치는 달라집니다.

MS의 평가가 너무 자사에 유리한 방향으로 조작되어 평가되었다고 만은 분들이 흥분이시군요. 하지만 "MS"가 평가한 방식의 시스템이 구축된 곳은 의외로 많습니다. 그러면 그런 사이트에서는 MS의 평가내용은 매우 중요하겠죠 ^__^

뭐 다 그런것 같네요. 님이 제 글에 그렇게 흥분하는 이유는 아마 지금쯤은 .NET으로 많이는 아니더라도 조금쯤은 밥벌이를 하는 사람으로 바뀐 것이 아닌가 하고 추측해 봅니다. 소프트웨어 기술에서 진짜 기술적인 우위에 어떤 소프트웨어가 있다. 이거 솔직히 평가 불가능합니다. "아래 한글이랑 훈민정음 어떤 소프트웨어가 더 나은가?"라고 물어오는 사람 있다면 답은 이것밖에 없습니다. "자신에게 편리한 프로그램" 그리고 자신에게 편리한 프로그램이 뭐냐? 이전에 쓰던거 입니다. 나머지는 분위기 띄우기져.. 그런 면으로 따지면 솔직히 리눅스는 좀 질 떨어지는 프로그램입니다. 안그런가요?

익명 사용자의 이미지

윤팔님 구만하세여...

익명 사용자의 이미지

저도 자바의 지지자 중 한 명이지만 이 부분에 대해선
위의 분 말씀이 정확합니다. 다만 .NET이 자바의 초창기
부터 구상되었다는 건 처음 듣습니다. 하지만 이 부분은
그다지 중요한 논쟁거리는 아닌 것 같습니다.

그리고 제 생각에도 이제는 반MS 감정에 호소하지 않고도
성능과 기술력으로 자바 플랫폼이 인정 받을 때가 된 듯
합니다.

그럼~

cedar_의 이미지

아랫글처럼 꽤 오래 전에 나온 M$의 X같은 뻥입니다.
관련해서 아랫글보다 약간 더 자세한 설명이 있는 글을 퍼왔습니다.
(출처: http://www.borlandforum.com )

===========================================================

작년 11월에 MS가 자바 개발자들을 흔들어놓기 위해 내놓았던 펫스토어 속도 논쟁이 있었습니다.
C#과 자바의 속도를 비교했더니 10배 이상이 차이가 나더라는 MS의 발표였는데요.
그리고 이 논쟁의 영향으로 상당수 자바 개발자들(주로 초급자들을 중심으로)이 흔들리거나 C#으로
넘어갔던 것으로 추측합니다.

자바를 공부하시는 분들은 다들 아시지만, 이 펫 스토어라는 것은 다양한 자바언어의 기술들을
종합해서 구현해본 상징적인 예제입니다. 필드에서 쓰기 위한 것이 아니라, 다양한 JVM 플랫폼들이
자바의 모든 스펙을 다 구현하고 있는지를 간단히 테스트해보기 위해 쓰는 예제지요.

MS의 주장은, 이 예제를 C#으로 포팅해서 해봤더니 자바보다 엄청나게 빠르더라, 하는 거였는데,
뭐 한마디로 말도 안되는 쌩 거짓말이었습니다.

일단, MS가 C#으로 컴파일했던 것은 펫 스토어와는 아주 많이 다른 소스였습니다.
상당히 많은 코드들을 DBMS의 스토어드 프로시저로 옮겨버렸고(데이터 핸들링 코드들을 스토어드
프로시저로 옮겨놓으면 속도가 빨라지는 것은 DB 최적화의 가장 기본적인 상식임), 또 펫스토어에
있던 엔티티빈 구조를 싹 빼버리고 직접 디비 핸들링을 해버렸습니다. (저도 자세히 알지는 못하지만
엔티티 빈은 DB 핸들링을 담당하는 일종의 미들웨어에 해당하는 것으로, 이걸 쓰면 직접 연결에 비해
속도가 많이 느려진다고 하더군요.)

코드를 스토어드 프로시저로 옮겨버렸는데 다른 최적화야 말할 것도 없겠지요.
한마디로, 원래 자바코드였던 펫스토어 프로젝트는 다양한 기술을 시험해보기 위한 샘플일 뿐인데
MS는 거기다 최대한의 최적화를 해서 완전히 다른 프로젝트를 만들어버린 것입니다.

또 사용한 DBMS도, 자바쪽에서는 오라클을 사용했는데 비해 C#의 경우엔 MS SQL을 썼습니다.
두가지 DBMS 사이의 속도차이도 영향이 클 거구요.

MS가 이런 눈가리고 아웅하기식의 결과를 마치 사실인양 뻔뻔스럽게 발표한 의도는 뻔하겠죠?
자바에 있어 중급 이상 개발자들이라면 코웃음을 치고 말 일이지만, 입문하시는 분들에게는
그런 배경이 어떤지를 모릅니다. 어떤 분야라고 하더라도 입문자가 상당수를 차지하기 때문에,
(아마도 30% 안팎?)이런 말도 안되는 결과라도 내놓으면 잘 모르는 입문자들은 영향을 많이 받게
됩니다.

또 이미 자바가 기득권을 가지고 있는 상황에서, 어떤 공격적이고 악의적인 비방이라고 하더라도
결과는 시장에 진입하고 있는 닷넷쪽에 유리한 결과가 됩니다. 정치가들이 세력에서 밀리면
각종 근거도 없는 의혹들을 쏟아내고, 그것이 실제로 조금이라도 의혹을 받은 쪽에 불리하게
작용하는 것과 같습니다.

이 결과에 대해 썬에서는 다시 벤치마크를 하는 등의 정면 대응은 안했던 것으로 기억하는데..
아마도, 사실 기본적으로 자바가 C#보다 조금쯤은 느리기 때문일 겁니다.

그럴 수밖에 없는것이.. 큰 관점에서 보면 자바와 C#은 같은 레벨의 언어입니다.
(C/C++과의 차이를 말하는 겁니다.) 자바는 이미 꽤 오래전에 만들어진 스펙이므로 훨씬 뒤에 나온
C#이 자바보다 못하다면 MS에 바보들만 모여있는 거겠지요.

게다가, C#, 그리고 닷넷은 적어도 지금 상황에서는 절대적으로 윈도우 플랫폼에 최적화에 최적화를
거듭한 것입니다. 반면 자바는 윈도우보다는 솔라리스에 더 최적화가 되어있죠.

이런 예에서와 같이...
일반적으로 IT업계의 속도와 성능 논쟁은 거의 최적화 문제로 얼룩진 논쟁일색이 되기 마련입니다.
그리고 보통 최초의 공격을 먼저 시작했던 업체쪽이 조금이라도 유리하게 상황이 전개됩니다.

위의 펫 스토어의 경우에도, 최초의 자바 펫스토어 벤치마크를 했던 오라클이 닷넷보다 J2EE가
더 빠르다는 결과를 최근에 다시 내놓았지만 별로 주목받지 못하고 있는 것 같습니다.
http://otn.oracle.com/tech/java/oc4j/pdf/9ias_net_bench.pdf

익명 사용자의 이미지

이딴 조사 믿을수 있나요?

아전인수격으로 하는데....

이런 거는 절대 믿으면 안됩니다.

익명 사용자의 이미지

꽤 오래전에 논란이 되었던 이야기 입니다.
결론만 정리하면,

(1) J2EE Blueprint의 PetStore는 디자인 패턴을
보여주기 위해 작성되었기 때문에 처음부터 성능은
고려되지 않았습니다.

(2) 거의 overengineering에 가까울 정도로 많은
추상화 계층이 존재하는 J2EE 버전과는 달리 .NET
버전은 거의 ASP.NET에서 곧장 데이터베이스에 접속
하는 2-tier 어플리케이션에 가깝습니다. 사실
stored procedure의 사용 만으로도 그 정도의 성능
차이는 당연하다고 생각합니다.

(3) 벤치마크가 수행된 하드웨어/OS/데이터베이스
등이 동일하지 않습니다.

실제로 MS의 발표 이후 오라클이 Oracle9iAS를 이용
해서 같은 테스트를 한 결과 자사의 제품이 .NET 버전
보다 18배 빠른 성능을 나타냈다고 발표했습니다.

이런 식의 단순 비교는 마켓팅 전략 이상도 아하도
아닙니다. 정말 순수한 의도로 벤치마크 테스트를 제안
했다면 왜 ECPerf를 사용하지 않았을지 궁금하군요.

아래는 기사의 하단 resources 섹션에 보면 위와 관련된
많은 토론 내용이 있습니다. 참고하세요.

익명 사용자의 이미지

Sorry I've missed the reference link!

So, here you're :
http://www.theserverside.com/resources/article.jsp?l=PetStore