Calling in the geeks
I had the opportunity to attend a conference this week on high performance computing.
This is big supercomputing stuff but in the embedded space.
Unless you've been living in a cave you seen the advertisements for multiple core processors.
This number of cores isn't going to get smaller. Plans are out there for tens, hundreds or even thousands of processors on a single chip.
Suddenly now that silicon is real, people are trying to figure out how to make them work as programming in parallel is actually fairly hard to do.
as a side note, This actually isn't really a surprise to a lot of us who been in the trenches of this world for a long time.
So one of the professors from a little 3 letter technical school nearby
had decided to teach a course in parallel computing. He quickly realized that he had to first deal with teaching the aspects of performance computing first.
Most students now have been trained in and are working in languages, JAVA etc, which have totally abstracted hardware out of the picture.
So cutting to the chase here, the speaker was curious about the performance difference in execution times between standard C and Java.
He coded up an FFT in java and in C and benchmarked the results.
Hopefully there are enough geeks here to weigh in but would any care to guess if there was a difference and what the performance multiple was?
I'll let it sit for a day or two to give people a chance to answer.
This is big supercomputing stuff but in the embedded space.
Unless you've been living in a cave you seen the advertisements for multiple core processors.
This number of cores isn't going to get smaller. Plans are out there for tens, hundreds or even thousands of processors on a single chip.
Suddenly now that silicon is real, people are trying to figure out how to make them work as programming in parallel is actually fairly hard to do.
as a side note, This actually isn't really a surprise to a lot of us who been in the trenches of this world for a long time.
So one of the professors from a little 3 letter technical school nearby
had decided to teach a course in parallel computing. He quickly realized that he had to first deal with teaching the aspects of performance computing first. Most students now have been trained in and are working in languages, JAVA etc, which have totally abstracted hardware out of the picture.
So cutting to the chase here, the speaker was curious about the performance difference in execution times between standard C and Java.
He coded up an FFT in java and in C and benchmarked the results.
Hopefully there are enough geeks here to weigh in but would any care to guess if there was a difference and what the performance multiple was?
I'll let it sit for a day or two to give people a chance to answer.
lol, tim
I would expect the c to run at least twice as fast. I'm assuming there were no monkeys in the works for either benchmark, like cached code (or lack there-of) and that the C code was compiled and that the compiler was one of recent enough vintage to be able to produce multi-threaded object code. (If that's still what it's called
)
I would expect the c to run at least twice as fast. I'm assuming there were no monkeys in the works for either benchmark, like cached code (or lack there-of) and that the C code was compiled and that the compiler was one of recent enough vintage to be able to produce multi-threaded object code. (If that's still what it's called
)
C code flies compared to Java. Not only is memory management awful with Java it needs to run the JVM in the background.
Tho I feel like with you asking the question, they got Java to perform faster? What did the test consist of?
Tho I feel like with you asking the question, they got Java to perform faster? What did the test consist of?
I'm old school, and C has been my language of choice for over two decades. I've used other languages, but I've only dabbled a little bit with Java. C has really done the trick for us systems-level geeks.
Java runs in a virtual machine environment, and I would expect it to be a lot slower than an equivalent C program which gets compiled into a native machine language.
Hi, Jerry. Good to see you today!
Java runs in a virtual machine environment, and I would expect it to be a lot slower than an equivalent C program which gets compiled into a native machine language.
Hi, Jerry. Good to see you today!
Trending Topics
ok since a few people have posted...
Mike if I recall correctly, it was just a straight 1K by 1k butterfly FFT.
same standard PC platform for both.
The java implementation was 200,000 times slower than C.
I fully expected java to be much slower but not by anywhere near that amount.
The other parts that were not benchmarked were memory use and power dissipation.
Obviously heavy floating point is involved but I think it really just died in the contructor-malloc-memcopy destructor-dealloc loops.
Mike if I recall correctly, it was just a straight 1K by 1k butterfly FFT.
same standard PC platform for both.
The java implementation was 200,000 times slower than C.
I fully expected java to be much slower but not by anywhere near that amount.
The other parts that were not benchmarked were memory use and power dissipation.
Obviously heavy floating point is involved but I think it really just died in the contructor-malloc-memcopy destructor-dealloc loops.
Originally Posted by boltonblue,Sep 27 2008, 05:14 PM
ok since a few people have posted...
Mike if I recall correctly, it was just a straight 1K by 1k butterfly FFT.
same standard PC platform for both.
The java implementation was 200,000 times slower than C.
I fully expected java to be much slower but not by anywhere near that amount.
The other parts that were not benchmarked were memory use and power dissipation.
Obviously heavy floating point is involved but I think it really just died in the contructor-malloc-memcopy destructor-dealloc loops.
Mike if I recall correctly, it was just a straight 1K by 1k butterfly FFT.
same standard PC platform for both.
The java implementation was 200,000 times slower than C.
I fully expected java to be much slower but not by anywhere near that amount.
The other parts that were not benchmarked were memory use and power dissipation.
Obviously heavy floating point is involved but I think it really just died in the contructor-malloc-memcopy destructor-dealloc loops.
constructor-malloc-memcopy destructor-dealloc loops.

Ya java is slow, always will be.









