I have written automated systems in all three languages.
First C++ is WAY WAY WAY overrated as a superior language. I am an old guy here and I remember when the Fortran people used to say, "oh that C++ will never be as fast as Fortran". Lo and behold it was and now the C++ people are saying the same thing.
With all that being said, the reality is as follows.
C++ is faster if you chuck the "safety" features of programming languages and avoid things like STL, and Boost. In raw bytes to bytes C++ is faster, but then again so is C.
The moment you add the baggage of STL, and Boost you are slower than well written C# code. The advantage that the C# JIT and Java jit have is that those safety features are well optimized. C++ safety features rely on the optimization of the compiler.
Thus if you are not careful with your STL, and Boost code you will have a lame duck of an application.
If you are not careful with your object references in C# or Java then you will also have lame duck applications.
Let me illustrate... We all know about OHLC (Open High Low Close) The classical object approach is to define the OHLC as individual classes and put it into a List<OHLC>.
THAT IS MEGA SLOW... In C# you need to define the OHLC as a struct and then create an array like the following OHLC[]. That simple step in itself has a massive speed up factor.
I personally would never touch C++ again. I would rather tweak and optimize my C# or Java code. My development with C# or Java is 100 times more productive than farting around with a dangling C++ pointer that causes a core dump.
If you plan on using C# or Java make sure to invest into a profiler like the one from Jet Brains. A profile will quantify what is slow code, and not be reliant on what you think is slow.
Quote from christianhgross: ... My development with C# or Java is 100 times more productive than farting around with a dangling C++ pointer that causes a core dump...
Programmer productivity is almost always the more important factor, and so the best language is usually the one you already know (unless it's Fortran or Cobol ). Also, upgrading to more powerful hardware is often cheaper than re-optimizing software unless you've done something really dumb.
Programmer productivity is almost always the more important factor, and so the best language is usually the one you already know (unless it's Fortran or Cobol ). Also, upgrading to more powerful hardware is often cheaper than re-optimizing software unless you've done something really dumb.
I did not want to say that as an argument... But yeah I agree with you. I am so much more productive with C#, or Java.
I think one of the largest Java platform's is ThinkorSwim's desktop application. It's gotta be 1/2 million lines of code....at least.....and it uses multithreading to-the-max.
I think one of the largest Java platform's is ThinkorSwim's desktop application. It's gotta be 1/2 million lines of code....at least.....and it uses multithreading to-the-max.
Or Interactive Brokers... Think or Swim is considered a dog by some. However I always thought IB's TWS was pretty quick.