我正在构建一个交易组合管理系统,负责非高频交易组合的生成、优化和模拟(处理1分钟或3分钟的数据条,而不是滴答数据)。在
我计划使用amazonweb服务来承担应用程序的全部负载。在
作为语言,我有四个选择。在
以下是项目范围的极端范围。可能永远不会这样,但它在需求范围内:
速度是个问题,但我相信Java可以处理负载。在
我只想确保Java能够轻松地处理上述需求。我不想在C++中做这个项目,但如果需要的话,我会的。在
之所以使用C,是因为我认为它是Java的一个很好的替代品,尽管我一点也不喜欢Windows,如果一切都一样,我更喜欢Java。在
Python—我读过一些关于PyPy和pyscho的文章,它们声称Python可以通过JIT编译进行优化,以接近C语言的速度运行。。。这几乎是它在这个列表上的唯一原因,此外,Python是一种很棒的语言,可能是编写代码最愉快的语言,这对这个项目来说根本不是一个因素,而是一种额外的好处。在
总而言之:
我们不处理毫秒甚至基于秒的交易。唯一要考虑的是,当Java在必要数量的EC2服务器上分散时,Java是否能够处理这种负载。在
非常感谢你们的智慧。在
选择你最熟悉的语言。如果你对它们都了解得一样,而且速度是一个真正的问题,那么选择C
虽然我是Python的超级粉丝,但就个人而言,我并不是Java的超级爱好者,但在这种情况下,我不得不承认Java是正确的选择。在
对于许多项目来说,Python的性能并不是一个问题,但是在您的情况下,即使是轻微的性能损失也会很快增加。我知道这不是一个实时模拟,但即使是批量处理,它仍然是一个需要考虑的因素。如果一台虚拟服务器的负载太大,那么速度加倍的实现将使虚拟服务器成本减半。在
对于许多项目,我还认为Python将允许您更快地开发解决方案,但在这里我不确定是否会这样。Java拥有世界级的开发工具和顶级的企业级框架,用于并行处理和跨服务器部署,尽管Python在这方面有解决方案,但Java显然具有优势。您还可以使用Python无法匹配的Java架构选项,比如Javaspaces。在
<>我认为C和C++对这样的项目施加了太多的开发开销。他们是可行的,如果你非常熟悉这些语言,我相信这是可行的,但除了潜在的更高的性能,他们没有其他东西可以带来。在C只是对Java的重写。如果你是一个Windows开发人员,如果你喜欢Windows,我会用C而不是Java,但如果你不关心Windows,就没有理由关心C。在
我会选择Java来完成这个任务。在RAM方面,java和C++之间的区别在于java中每个对象的开销为8字节(使用Sun 32位JVM或Sun 64位JVM带有压缩指针)。所以如果你有上百万的物体飞来飞去,这会有不同。就速度而言,java和C++在这个比例上几乎相等。在
所以对我来说更重要的是开发时间。如果你在C++中犯了一个错误,你会得到一个分割错误(有时你甚至没有得到),而在爪哇,你会得到一个很好的异常,有堆栈跟踪。我一直喜欢这个。在
<>在C++中,你可以有原始类型的集合,而java没有。你必须使用外部库来获取它们。在如果您有实时性需求,Java垃圾收集器可能会很麻烦,因为收集20GB的堆需要几分钟的时间,即使在具有24核的计算机上也是如此。但是,如果在运行时不创建太多的临时对象,那也可以。只是你的程序可以让垃圾回收在你意想不到的时候暂停。在
相关问题 更多 >
编程相关推荐