3

我知道如何用 Python 编程,但我也有兴趣学习 C++。我听说它比 python 快得多,对于我目前正在编写的程序,我希望它们尽可能快速有效地运行。我知道其中大部分来自于编写好的代码,但我也想知道使用另一种语言(例如 C++)是否会有所帮助。

当我思考这个问题时,我意识到,由于我的大多数程序将主要使用互联网(如在实现 Google API 并使用来自它们的信息向其他网站提交数据),那么语言的速度可能并不重要如果我的互联网连接速度总是相对相同。我有两种连接互联网的方式:Selenium(或某种自动浏览器)用于需要浏览器的事物,以及只是 HTTP 请求。

即使我的程序主要关注互联网,我会在 python 和其他语言之间看到多少差异?

谢谢。

4

1 回答 1

2

场景

使用编译为机器代码的语言所获得的主要好处是,您可以执行大量字节和位魔术。比方说,修改图像数据、转换音频、分析基因组序列数据库的索引。

典型任务

提供完全不同的网页通常会遇到问题:您将从硬盘加载资源,如果它是图像或音频则直接提供它们,或者您将对文本资源执行不同的转换步骤,直到它成为最终的 HTML 文档。后者将使用模板引擎、数据库查询等。

如果你看一下,你会发现大多数东西,比如 90-99% 都是相当高级的东西——在 Python 中,你将使用一个由许多用户优化的 API 以获得最佳性能(意思是:时间和空间)。“打开文件”在 C 中的速度几乎与在 Python 中一样快,因此读取文件并将其提供给某个 Socket 也是如此。在 C++ 中转换文本数据可能比在 Python 中要快一些,但是......它必须有多快?一个用户很可能愿意等待200ms,不是吗?对于一个漂亮的高级模板引擎来转换一些文本来说,这需要很多时间。

C++ 和 Python 能为您做什么

与用 C++ 编写的服务器相比,典型的 Python Web 服务编写起来要快得多,部署起来也更容易。如果您在 C++ 中执行此操作,您首先需要处理套接字和连接——对于那些将使用现有库或编写您自己的处理。如果您使用现有的库(我强烈推荐),那么您基本上没有做任何与 Python 不同的事情。如果您编写自己的处理程序,那么您可能会做很多很多低级的事情,这些事情会破坏您想要的性能。不,这不是一个选择。

如果您需要速度,而 Python 以及服务器和模板框架还不够,您应该重新考虑您的架构方法。然后看看c10k-problem并用 C 编写小片段。(也看看这个 c10k 非常热门的话题)但是我看不出有很多理由不使用像 Python 这样的高级语言,如果你只是看用于中等复杂的 Web 服务应用程序的性能。

总结:区别

如果您只是从硬盘驱动器提供文件,我猜您的 Python 程序甚至会比您手工制作的 C++ 服务器更快。如果你使用一个用 C 或 C++ 编写的框架并且只是放入你的静态页面,我猜你会得到比 Python 高 2-5 倍的提升。再说一次,如果您的 Web 应用程序比提供静态内容更复杂一点,我估计差异会很快减小,并且您最多会获得 1-2 倍的速度增益。

这不仅仅是关于速度...

关于 C++ 和 Python 之间另一个区别的注意事项不应该忘记:由于 C++ 是真正编译的并且不像 Python 那样动态,因此使用 Python 可以获得大量静态错误分析。编写正确的代码总是很困难,但可以在 C++ 和 Python 中通过良好的测试静态分析来完成——后者在 C++ 中更简单(我认为)。如果这对你来说是个问题,你可能会再想一想,但你问的是速度。

于 2012-11-26T11:06:58.210 回答