I have used pyctp, c++ ctp, and c# ctp a little bit, but only did a small part of the work.
In my opinion, the amount of code in the core logic part of various languages ??is similar. The difference lies in the degree of perfection of the basic library and the difference in development and debugging efficiency brought about by the language itself.
Even if you are familiar with C++, the development efficiency is still not as good as C#, because in future strategy development, you will frequently modify the program and then run it, and the compilation speed of C++ is too slow. In addition, the C++ language and development environment determine that the cost of debugging is too high. Taken together, the efficiency of CTP development in C++ is much lower than that of C#.
My own feeling is that most of the time when developing in C# is used for business logic, while a large part of C++ is used to solve problems directly or indirectly caused by the language and environment.
From an efficiency perspective, after my simple test, the difference is not big (no more than 20%), because the STL and boost paradigms encourage creating objects on the stack, and the overhead of object copying is significant, while C# There is no such cost in the way of mid-pass reference. In addition, the cost of creating objects in C# is less than the cost of creating objects in the C++ heap.
Of course, compared to C++, C# has more restrictions, such as cross-platform (mono is relatively immature), C# templates and operator overloading restrictions are stricter, etc. Overall, I prefer C#.
For Python, I find it more difficult when writing complex systems, especially when doing object-oriented architecture (the object-oriented mechanism is not perfect and there is no function overloading). There is no static type checking. Over time, after the code is repeatedly modified, I don’t know what pitfalls there will be. And because of dynamic typing, the editor's auto-complete and prompts are also very weak. In the past, what parameters were required by the function had to be looked at the code and thought about for a while, which greatly affected development efficiency.
So, I'm back to C# now.
My suggestion is that unless you are comfortable using C++ and the development environment, and have accumulated a complete basic tool library, the cost of using C++ is very high.