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