【问题标题】:C++ vs Python server side performanceC++ vs Python 服务器端性能
【发布时间】:2012-09-29 20:11:12
【问题描述】:

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

【问题讨论】:

  • 优化应该真的接近尾声了。获取代码,并尽快启动并运行,您可能会发现 IO 是瓶颈因素。
  • 对于这样的问题,您可能应该在 Python 中构建一个示例并测量性能。如果它不符合鼻烟,那么你看看有什么问题。首先使用单个服务器可能会限制您,但您永远不会知道。
  • 好建议伙计们。我想我害怕选择 Python 并且不得不重写所有代码,因为 Python 无法管理太多的连接。但是因为你什么都没说,我想我会用 Python 写一个原型。
  • @MichaelBrown 一般来说是的,但是一些决定要早些做出,因为它们几乎影响了整个代码库。语言选择是一种尽早做出的选择——当然,如果它很重要
  • @delnan 我(不清楚)指的是原型设计,以帮助确定需求。

标签: c++ python performance cpu-speed


【解决方案1】:

有了这么多的连接,您的服务器将受到 I/O 限制。 C 和 C++ 等语言与 Python 和(比如)Ruby 等语言之间经常提到的速度差异在于会减慢计算速度的解释器和装箱开销,而不是 I/O 领域。

不仅可以很好地合理地使用并发(通过进程和线程,GIL 在 I/O 期间释放,因此对于 I/O 绑定的程序来说并不重要),还有丰富的异步服务器。此外,与 C 和 C++ 相比,Web 服务器通常具有更好的 Python 集成(例如,mod_wsgi 用于 Apache)。这使您免于编写自己的服务器循环、套接字管理等,无论如何您可能不会像主要服务器那样做。这是假设我们谈论的是 Web 服务,而不是 Apache 等无法开箱即用的更神秘的东西。

【讨论】:

  • 非常好的评论。该服务器必须与 Web 服务器连接,因此集成非常重要。关于 I/O 问题,除了使用并发,您有什么建议吗?谢谢。
  • @DavidMorenoGarcía 如前所述,异步 I/O 是该领域的主要流行语。除此之外......呃,让服务器更快的连接?
  • 开头大约 100mb。
【解决方案2】:

我预计服务器时间将由 I/O 网络、磁盘等主导。您想证明 Python 程序的 CPU 消耗是有问题的并且在考虑更改之前,您已经掌握了所有低调的 CPU 成果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    相关资源
    最近更新 更多