我知道如何用Python编程,但我也对学习C++感兴趣。我听说它比python快得多,对于我当前正在编写的程序,我希望它们尽可能快和高效地运行。我知道很多原因都来自编写好的代码,但我也想知道使用另一种语言(例如C++)是否会有所帮助。
在考虑这一点时,我意识到,由于我的大多数程序将主要使用互联网(例如实现Google API并使用其中的信息将数据提交到其他网站),因此语言的速度可能并不重要如果我的互联网连接速度始终保持相对不变。我有两种连接到Internet的方式:Selenium(或某种自动浏览器)用于需要浏览器的内容,以及仅HTTP请求。
即使我的程序主要关注互联网,我还是会在python和其他语言之间看到多少区别?
谢谢。
最佳答案
情境
使用编译为机器代码的语言所获得的主要好处是,您可以执行很多字节和位魔术操作。可以说,修改图像数据,转换音频,分析基因组序列数据库的索引。
典型任务
服务网页通常会遇到完全不同的问题:您将要从硬盘加载资源,如果资源是图像或音频,则直接为它们提供服务,或者对文本资源执行不同的转换步骤,直到它变成最终的HTML文档。后者将使用模板引擎,数据库查询等。
如果您看到这些内容,就可以看到大部分内容,例如90%到99%都是相当高级的内容-在Python中,您将使用许多人为最佳性能而优化的API(即:时间和空间)。在C语言中,“打开文件”几乎与在Python中一样快,因此从其中读取内容并将其提供给某些Socket也是如此。在C++中,转换文本数据可能要比在Python中转换快一些,但是...它必须有多快?使用很有可能愿意等待200ms,不是吗?对于一个好的高级模板引擎来说,转换大量文本会花费很多时间。
C++和Python可以为您做什么
与使用C++编写的服务器相比,典型的Python Web服务编写起来速度更快,部署起来也更容易。如果要使用C++进行处理,则首先需要处理套接字和连接-对于这些套接字和连接,它们将使用现有的库或编写自己的处理方法。如果您使用现有的库(强烈建议),那么您所做的基本上与Python没什么不同。如果您编写自己的处理方法,那么您可能会犯下很多很多低级的事情,这些事情会烧坏您想要的性能。不,那不是一个选择。
如果需要速度,而Python以及服务器和模板框架还不够,则应重新考虑您的体系结构方法。然后看一看c10k-problem并用C编写一些小片段。(也请看this c10k very hot topic)。但是,如果您只想在中等性能的环境中寻找性能,则我看不出不使用Python之类的高级语言的原因很多。复杂的网络服务应用程序。
摘要:区别
如果您只是从硬盘中提供文件,我想您的Python程序甚至比手工制作的C++服务器还要快。如果您使用以C或C++编写的框架,并且只放入静态页面,那么我猜想您将获得比Python高2-5倍的优势。再说一次,如果您的Web应用程序比提供静态内容要复杂得多,我估计差异将很快减小,并且最多将获得1-2倍的速度提升。
不仅仅是速度...
关于C++和Python之间的另一个区别的注意事项是:不要忘记:由于C++确实是编译的,并且不如Python动态,因此使用Python会获得很多静态错误分析。编写正确的代码总是很困难,但是可以在C++和Python中通过良好的测试和静态分析来完成-后者在C++中更简单(我认为)。如果这对您来说是个问题,您可能会再考虑,但是您询问了速度。