I would like to build my own signal processing library, and possibly another one about graphs algorithm. I find C# very useful and robust in regards of possible bugs associated with memory allocation, pointers, threading etc...
But I was wondering how much am I going to lose in terms of performance. Is it going to be something acceptable?
Thanks
For most people, C++ is the better choice. It has more features, more applications, and for most people, learning C++ is easier. C is still relevant, and learning to program in C can improve how you program in C++.
Perhaps the most commonly used language for signal processing algorithm development and exploration is MATLAB from The MathWorks. The mathematical, matrix-based structure of the MATLAB language is a good fit for signal processing algorithms that can be expressed as mathematical functions.
The code which was written in c could be easily reused on a different platform, beside it Assembly does not provide the portability and source code specific to a processor because assembly instruction depends on the processor architecture. Software which has written in assembly perform well as compared to C.
Answers: Actually, both are difficult and both are easy. C++ is built upon C and thus supports all features of C and also, it has object-oriented programming features. When it comes to learning, size-wise C is smaller with few concepts to learn while C++ is vast. Hence we can say C is easier than C++.
When I started my DSIP course I was a pure C# developer . After looking around for a while, I ended up using C++libraries and learning C++ which at end it was to my benefit since I was doing real-time image processing and there is no way C# can match the performance.
In fact, you can run a quick test and run a mathematical equation consisting of a few multiplication in C# and C++ a million times and see the huge difference that there is doing calculations with floating point numbers.
If you are lucky, you will get wrappers in C# which is the best of both worlds, fast calculation in C++ and easy to use in C#. There is a C# wrapper for OpenCV and it seems to be quite good (http://www.emgu.com/wiki/index.php/Main_Page).
I highly recommend OpenCV especially for 2D signal processing. It is great in performance and made my project possible. Have a look at the demo here: http://www.youtube.com/watch?v=NeQvcdRPxoI and http://www.youtube.com/watch?v=NqYPJELHkhA
With the right hardware, you shouldn't have an issue.
Something to think about though: I have no trouble whatsoever trying to find a library to do signal processing in C++. However, I can't easily find much information at all dealing with signal processing for C#.
If you can find a way to make it work, you might have just found a way to get into a niche area of development that many other people can benefit from.
Just something to think about. Unless you are doing this on some mission critical system it probably doesn't matter either way. I'd just go with whatever you think will benefit you more in the long term.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With