我将开发实时应用程序,它将接收股票市场数据并进行一些处理,然后传播到客户端应用程序.我决定在服务器和客户端之间划分计算,服务器将进行基本计算,然后将基本数据发送到计算最终变量的客户端.
我决定使用C#和使用C++计算最终变量(称为:变量计算器)的组件开发客户端应用程序(仅限GUI).在c ++中开发"变量计算器"的目的是为了模块化.例如,如果我发现变量计算将在客户端需要更多时间,我可以在服务器端使用相同的模块.
我还将使用标准C++开发服务器端.
注意:服务器应该处理一组消息并在不到一秒的时间内将其发送到客户端.市场开始时消息的最大数量为100,000条消息
有什么建议?
您必须使用的实时约束究竟是什么?微秒,毫秒,秒?
它实际上需要是实时的,还是仅仅是高性能的?
假设它确实需要是实时的,那么语言不太可能是系统中最重要的东西,并且您很可能受到其余运行时环境的限制.例如:您使用的库,网络堆栈,网络协议,操作系统,CPU架构,内存,缓存等.
总而言之,C可能会为您提供易用性和了解底层系统正在做什么的最佳组合.如果您非常了解C++,那么如果使用严格的编码标准,它也是合适的.如果它具有极高的性能,或者具有极高的可预测性要求,那么您可能需要删除汇编程序代码,但这不太可能,并且编译器可能比您更好地理解CPU管道,并且它对于几千行代码而言,这将是不切实际的.
如果当然,如果你只是需要一些相对较快的,那么我不是实时性应该是你在语言选择中的首要考虑因素,而是适当的库和工具的可用性,开发团队的经验,对应用程序的适用性等等会是更重要的考虑因素.
我不同意"实时"是一个模糊的定义.更有可能的是,人们只是不明白其含义.实时是指系统的响应时间与实际系统相同.实际上,您可以使系统比实时更快,从而导致类似于系统慢于实时的问题.
因此,我不认为你在要求语言使用时参考"实时"应用程序,就像真正快速的应用程序一样.
查看语言枪战,看看哪种测试最符合您的设计空间; 但是,我的直觉回答是使用C.
在投资银行工作了近30年.我写了很多像这样的应用程序.您需要解决的基本问题可能不是实时性能,而是延迟和吞吐量.
这种情况下的延迟是关于减少网络延迟,语言选择不是很相关.
吞吐量是关于长时间持续的大处理能力,而性能是在短时间内非常大的处理能力.虽然在这种情况下语言选择比延迟更重要,但它通常不像您想象的那么重要.
在这两者中,通常最好先设计尽可能低的延迟.吞吐量问题可以通过各种技巧在以后的开发中解决,但是消除现有设计中的高延迟要困难得多.
所以我会在客户端和服务器上使用C#,至少对于概念验证而言.没有必要引入额外的复杂性(另一种语言)来解决不太重要的问题.
编辑:我注意到你编辑了你的问题,说服务器需要在不超过1秒的时间内处理多达100K的消息.我怀疑你可以用软件实现这一点,但你可以通过使用软件和硬件的组合来实现.
如果你确实需要这种级别的低延迟(而且我在业务中30年内从未需要它),那么语言选择并不像具有非常高的带宽以及超级优化和并行化那么重要算法.但我首先会质疑要求看看它们的真正含义 - 我敢打赌这不是他们所说的.