나는 90년도 후반에 처음 JAVA를 접했는데, 그당시에는 기껏해봐야 펜티엄 2, 펜티엄 3정도 되는 사양의 컴퓨터를 사용하고 있었는데, JAVA가 이식성이 좋아서(O/S 독립적) 앞으로 많이 사용할 것이라는 이야기는 그당시에도 많이 들었다. 하지만, C나 C++에서 생성된 executable file의 실행속도에 비하면 JAVA는 너무나도 느렸기에 나는 JAVA는 선호하지 않았다. 그당시에 JAVA 버젼이 2.0인걸로 기억한다.
최근에 여러 프로그래머들의 블로거의 글들이나 실제 엔지니어들의 이야기를 들어보면, 이제 상황은 조금 달라진것 같다. JAVA가 C++과 대등한 속도를 내거나 오히려 더 빠른 속도를 낸다는 것이다.
무슨 근거로?
당장에 googling만 하면 두 언어의 속도비교 benchmark 자료를 어렵지 않게 볼 수 있다.
http://keithlea.com/javabench/index "The Java is Faster than C++ and C++ Sucks Unbiased Benchmark"
위 사이트의 글은 2003년도에 쓰여졌다. 이 저자도 사람들이 JAVA가 느리다고 하는데, 사실은 JAVA가 더 빠르다는 것을 알려주고 있다. Reference 웹사이트에 가봐도 이 저자의 말이 틀리지 않았다는 것을 데이터로 증명하고 있었다.
Links / Responses
- Java vs. C benchmark - the benchmark is in Microsoft Word format
- FreeTTS performance case study - at Sun Research
- Linux Number Crunching - used 1.4.1 VM, got very different results than I did, maybe due to floating point optimizations added in 1.4.2
- SNAP matrix benchmark - Java vs. C++ for matrix multiplication
- Nine-Language Performance Round-Up - math and file I/O performance among nine languages
- Performance comparison C++, C# and Java - similar results as mine, mostly
- Java vs. C - for bubble sort, IBM's 1.3.0 client JVM comes out on top over GCC with full optimizations
- Runtime Vs Static Compilation - Performance Comparison - even old versions of Java can run fast
- Comparing C++ performance with Java - these are my benchmarks, except more hand-optimized and compiler-optimized (Java wins about half of them)
- Java Pulling Ahead? - "finds that Java performance on numerical code is comparable to that of C++, with hints that Java's relative performance is continuing to improve"
- Benchmark C++ vs JAVA - ran my benchmarks and added GCJ and Java 5.0 results
- C++ vs Java - David K. McCombs doesn't like my measurement of CPU time and some of the benchmark's C++ code
- 'The Java Faster than C++' Benchmark Revisited - someone doesn't like my benchmarks
- Performance Comparison of Java/.NET Runtimes - lots of VM's compared
- The Java (not really) Faster than C++ Benchmark - another benchmark with hand-optimized C++ code and different gcc flags
- Java Performance Urban Legends by Brian Goetz, discusses garbage collection vs. manual allocation & deallocation
- Yet Another Java vs. C++ Shootout - hand-optimized - 64-bit - GCC 4.2.2 vs Java 6
- New - December 2008 - Stefan Krause's results
- New - June 2010 - C++ vs Java performance; It's a tie!
JAVA가 더 빠르다고 해서 c++이 사라지는 일은 없겠지만, 적어도 JAVA가 C++보다는 일반적인 경우 상대적으로 빠르다라는 사실은 알았다.
* 추가
성능비교는 JAVA의 경우 JIT컴파일 한 것이라고 한다. 다시말하면, JAVA의 바이트코드가 JIT컴파일을 통해 기계어로 변환되는 과정을 거쳐서 실행된다는 것이다. 기존의 인터프리팅 방식이라면 당연히 C++과 비교했을때 성능차이는 분명 났을것...