- UID
- 2
- 积分
- 2874604
- 威望
- 1387331 布
- 龙e币
- 1487273 刀
- 在线时间
- 13155 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2024-11-24
|
为什么不直接用C++开发CTP
pyctp,c++ ctp,还有c# ctp,我都用过一点,不过都是只做了一小部分工作。
在我看来,各种语言核心逻辑部分的代码量都差不多。区别在于基础库的完善程度和语言本身带来的开发调试效率差别。
即使对c++很熟悉,开发效率依然比不上c#,因为将来做策略开发,会频繁的修改程序,然后运行,而c++的编译速度太慢。另外,c++语言和开发环境决定了其调试的代价过高,综合下来,c++开发ctp的效率要远低于c#。
我自己的感觉,用C#开发,绝大部分时间是用于业务逻辑,而C++很大一部分时间是用于解决语言和环境直接、间接带来的问题。
从效率方面来看,经过我的简单测试,相差不大(不超过20%),因为stl和boost范式鼓励在栈上创建对象,对象复制的开销很显著,而C#中传引用的方式则没有这个代价。此外C#中创建对象的代价要小于c++堆中创建对象的代价。
当然,相对与C++,c#的限制要多一些,比如跨平台(mono相对不成熟),c#模板、运算符重载的约束比较严格等。总的来说,我倾向于C#。
对于Python,我在写复杂系统的时候感觉比较吃力,尤其是在做面向对象的架构时(面向对象机制不完善,也没有函数重载)。没有静态类型检查,时间长了,代码反复修改之后,不知道会有什么陷阱。而且因为动态类型,编辑器的自动完成和提示也很弱,以前的函数要什么参数要看着代码想一会才能想起来,很影响开发效率。
所以,我现在又回到C#了。
我的建议是,除非对C++及开发环境用的很顺手,并且积累了完善的基础工具库,否则用C++的代价很高。 |
论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
|