C++与Python服务器端性能比较

3

我需要开发一个服务器,它需要建立大量连接以接收和发送小文件。问题是使用C++增加的性能是否值得花费时间开发代码,或者是否更好地使用Python并定期调试代码以提高速度。也许这是一个有点抽象的问题,没有给出连接数量,但我真的不知道。至少每分钟10,000个连接来更新客户端状态。


2
优化应该放在最后。尽快开始编写代码并运行,您可能会发现IO是瓶颈因素。 - Michael Brown
2
对于这样的问题,你可能应该在Python中构建一个示例并测量其性能。如果它不够好,那么你就可以看看问题出在哪里。起初你可能受限于使用单个服务器,但你永远不知道。 - wkl
好建议,伙计们。我认为我害怕选择Python并且必须重写所有代码,因为Python无法处理太多的连接。但是,由于你们没有提到这一点,我想我会使用Python编写一个原型。 - David Moreno García
1
@MichaelBrown 一般来说是的,但有些决策必须尽早做出,因为它们会极大地影响整个代码库。语言选择是其中之一,当然前提是它很重要 - user395760
@delnan 我(表述不清)指的是原型制作,以帮助决定需求。 - Michael Brown
@MichaelBrown 我明白了,根据其他评论。不过,原始措辞有误导性,即使你没有犯错,我也不能放过反对“过早优化”引用被曲解的机会 :) - user395760
2个回答

5
拥有如此多的连接,您的服务器将受到I/O限制。经常被引用的编程语言(如C和C++)与Python或Ruby等语言之间的速度差异在于解释器和装箱开销会减慢计算速度,而不是I/O领域。
同时,Python可以充分利用并发性(通过进程和线程,GIL在I/O期间被释放,因此对于I/O绑定程序影响不大)。此外,还有大量的异步服务器可供选择。此外,Web服务器通常具有更好的Python集成(例如Apache的mod_wsgi),比C和C ++更加方便。这使您无需编写自己的服务器循环、套接字管理等等,因为您很可能做不如主流服务器那样好。这是假设我们谈论的是Web服务,而不是一些Apache等基础软件不能直接完成的更高级任务的情况下。

非常好的评论。这个服务器必须连接到Web服务器,因此集成非常重要。关于I/O问题,除了使用并发之外,您有什么建议吗?谢谢。 - David Moreno García
1
@DavidMorenoGarcía 如先前所提到的,异步 I/O 是该领域的一个主要关键词。除此之外...嗯,让服务器获得更快的连接? - user395760
开始时大约100MB。 - David Moreno García

2

我预计服务器时间会被I/O-网络、磁盘等所占用。你需要证明Python程序的CPU消耗是有问题的,而且在考虑更改之前,你已经抓住了所有低于CPU性能阈值的因素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接