C# or Java ??
-
Hi, I have got a new project which is based on image processing. Which language will be better for this project.. C# or Java and why ? cheers rNr
between the two C# but for image processing u should consider C++
-
jsd001002 wrote:
C#,It is faster
would you mind providing empirical evidence to that extent? Having developed two 3D platforms in Java, I'm not convinced of all this slowness that people purport Java to have. Specifically, can you demonstrate what areas C# is faster in?
-
Hi, I have got a new project which is based on image processing. Which language will be better for this project.. C# or Java and why ? cheers rNr
As noted, the best language is likely the one you are most familiar with. Some notes, Java comes with the JAI which is a library specifically designed for Image processing. There is also a very good Java Image Processing book. Unfortunately the book was released before the JAI library so does not take advantage of it. The book is, regardless, quite good. C# has image processing libraries available from third parties. As noted in this thread, if you want a GUI interface on top, Visual Studio provides a handy WYSIWYG GUI editor. I prefer hand coding these things, so Java works better for me there. C++ has many good third party image processing libraries available. As far as speed, I think you'll find Java comparable to C++ in most respects, and good benchmarking tests and tools will make this clearly evident. The one thing I would point out, though, is that Java has a very poor implementation for their trig library and it is VERY slow. This is the only thing that would give me pause to use Java for image processing.
-
Never tried Fortran. But did use PLAN on an ICL 1900 series, as well as COBOL and Assembler on an IBM 360. Those were the days when timeshare was common and input via a punched card/tape after agency punching them from 80 column hand written coding sheets.
-
Hi, I have got a new project which is based on image processing. Which language will be better for this project.. C# or Java and why ? cheers rNr
-
jsd001002 wrote:
C#,It is faster
would you mind providing empirical evidence to that extent? Having developed two 3D platforms in Java, I'm not convinced of all this slowness that people purport Java to have. Specifically, can you demonstrate what areas C# is faster in?
He is probably just bloating the forum. I'd say that C# and Java perform very closely with some specific parts one is fast than the other, but nothing really significant. What is the fact is that both of them are outperformed by C++ and other unmanaged languages. Managed languages have many advantages, but some of them comes at the cost of performance like automatic garbage collection. I might be wrong but if I were to choose a language only for performance reasons I would have a hard time trying to decide on C# or JAVA. Maybe I would just flip coins.
-
Image processing - how intense? If very: C++ If not: C#, but then I'm biased towards good languages.
I'm largely language agnostic
After a while they all bug me :doh:
Well, for REALLY intense image processing you will want to use assembly language. One time I wrote a raytracer for calculating the signal strength of an 802.11 network. In C++ it took around 700ms to refresh the screen with one access point. (1000x800 pixel map, 2.2 GHz dual core cpu, single-threaded renderer). Making the renderer threaded dropped the render time to around 500ms - but rewriting the inner loop in assembly language (only 19 instructions) doubled the speed to 250 ms.
-
I'm sure he doesn't mean write EVERYTHING in assembly. I write almost all of my code in native C++, and for really speed-critical stuff I use asm optimizations. An RF raytracer I wrote last week experienced a perceptible speed improvement just by changing a few sqrt calls to assembly. Consider the statement
dist=sqrt(dsq);
The code generated by this is nearly 60 instructions long: (simplified for display)fld dsq
call sqrt
fstp dist;Everything below this is in msvcrt.dll
sqrt:
; save stack frame and registers - about 8 instructions
call _sqrtf
; restore stack frame and registers - about 8 instructions
ret_sqrtf:
; save stack frame and registers - about 8 instructions
call _sqrt
; restore stack frame and registers - about 8 instructions
ret_sqrt:
; save stack frame and registers - about 8 instructions
fsqrt
; restore stack frame and registers - about 8 instructions
retThe same exact result can be obtained by using three inline assembly instructions:
fld dsq
fsqrt
fstp distThis is TWENTY TIMES LESS CODE than the high-level version! This is admittedly an extreme example, but it was taken directly from code I wrote last week, in an inner loop executing about 5x10^7 times per update.
modified on Tuesday, May 20, 2008 2:35 PM
-
Hi, I have got a new project which is based on image processing. Which language will be better for this project.. C# or Java and why ? cheers rNr
I suppose you'll done some binary conversation of an image. If you look for faster code, then write it in C# or C/C++ better (Or asm if you need critical fast code). If you look for easier code - write it to the language you know better. If you want just file conversation (but not displaying the image) I suggest you PHP.
-
I'm sure he doesn't mean write EVERYTHING in assembly. I write almost all of my code in native C++, and for really speed-critical stuff I use asm optimizations. An RF raytracer I wrote last week experienced a perceptible speed improvement just by changing a few sqrt calls to assembly. Consider the statement
dist=sqrt(dsq);
The code generated by this is nearly 60 instructions long: (simplified for display)fld dsq
call sqrt
fstp dist;Everything below this is in msvcrt.dll
sqrt:
; save stack frame and registers - about 8 instructions
call _sqrtf
; restore stack frame and registers - about 8 instructions
ret_sqrtf:
; save stack frame and registers - about 8 instructions
call _sqrt
; restore stack frame and registers - about 8 instructions
ret_sqrt:
; save stack frame and registers - about 8 instructions
fsqrt
; restore stack frame and registers - about 8 instructions
retThe same exact result can be obtained by using three inline assembly instructions:
fld dsq
fsqrt
fstp distThis is TWENTY TIMES LESS CODE than the high-level version! This is admittedly an extreme example, but it was taken directly from code I wrote last week, in an inner loop executing about 5x10^7 times per update.
modified on Tuesday, May 20, 2008 2:35 PM
-
Funny you should ask as I have been developing image processor routines in C# for the past 2 weeks for OCR apps. Image manipulation is fairly easy once you are able to pull images into the correct binary classes, then I have been able to apply image transitions quite easily on a bit by bit level. Its not as fast as I would like but I have not optimised the code at all, it takes about 3 seconds to apply a brighten & sharpen filter on a 247k grayscale tiff. I am limited by the choice of language here though and have no idea on how fast java would perform.
-
Hi, I have got a new project which is based on image processing. Which language will be better for this project.. C# or Java and why ? cheers rNr
Java because it will hurt those who follow you more.
regards, Paul Watson Ireland & South Africa
Fernando A. Gomez F. wrote:
At least he achieved immortality for a few years.