Thursday, April 1, 2010

Why C++ is the better than Java, C#, and others for quant development

Why C++ is the better than Java, C#, and others for quant development
Man, these kinds of comparisons bring out in the worst in people. What is it with programmers and their programming language wars? My personal belief it matters based on the needs of your end client. As we know, quant development is very unique compared to other types of development. It is not really web based or digital signal processing or even game development. When it comes to pure quant modelling solutions, one must think that speed of execution is very essential for performance on the solution. Here is what I mean:
1. Java is based on a java Virtual machine (JVM) which includes a garbage collector. That right becomes a disability for the performance on a bin or executable file. It can definitely slow down your system if there are too many layers in your development stack. With the JVM, it doesn’t help. Ask any purist quant developer who know their stuff, the will vouch for this one.
2. C# can be fast but it has been proven to be the slowest of these three languages. Because it is based on .NET technologies and Windows, you can thank Microsoft for adding so many layers in with your interface, multitasking, and way much more stuff going on in the background.
3. If speed is essential, there is no doubt why tier one investment banks and hedge funds use C++ running on a barebones Linux platform like Red Hat. There are few layers in the stack as your compiler will turn everything into native byte code for the local operating system to churn on. That is what we call being close to the metal. Less layers, the better.
This then brings me to my argument of developing on Windows or Linux. Depending on your front end, this can determine which platform to choose. For instance, if you are working with traders or end clients who need to Microsoft Excel as the front end; this is without a doubt to go with C++ on Windows using Visual Studio. If you are using an end client like a scripting language (Python, Ruby, R, etc), it might be wise to look at SWIG which can rewrap your C++ libraries to talk to your client code. If so, go with a Linux operating system. That is what I would look for to choose your development stack and operating system.

No comments:

Post a Comment