作家
登录

告诉你为什么Python有点慢,但我却无所谓?

作者: 来源: 2017-04-27 10:35:06 阅读 我要评论

  • 为就义机能寻求临盆率而呐喊

让我大年夜关于 Python 中的 asyncio 这个标准库的评论辩论中歇息一会,谈谈我比来正在思虑的一些器械:Python 的速度。对不懂得我的人解释一下,我是一个 Python 的粉丝,并且我在我能想到的所有处所都积极地应用 Python。人们对 Python 最大年夜的抱怨之一就是它的速度比较慢,有些人甚至拒绝测验测验应用 Python,因为它比其他说话速度慢。这里说说为什愦我认为应当测验测验应用 Python,尽管它是有点慢。

速度不再重要

以前的情况是,法度榜样须要花费很长的时光来运行,CPU 比较贵,内存也很贵。法度榜样的运行时光是一个很重要的指标。计算机异常的昂贵,计算机运行所须要的电也是相当贵的。对这些资本进行优化是因为一个永恒的贸易轨则:

  • 优化你最贵的资本。

在以前,最贵的资本是计算机的运行时光。这就是导致计算机科学致力于研究不合算法的效力的原因。然而,这已经不再是精确的,因为如今硅芯片很便宜,确切很便宜。运行时光不再是你最贵的资本。公司最贵的资本如今是它的员工时光。或者换句话说,就是你。把工作做完比把它变快加倍重要。实际上,这是相当的重要,我将把它再次放在这里,仿佛它是一个引文一样(给那些只是粗略浏览的人):

  • 把工作做完比快速地干事加倍重要。

你可能会说:“我的公司在意速度,我开辟一个 web 应用法度榜样,那么所有的响应时光必须少于 x 毫秒。”或者,“我们掉去了客户,因为他们认为我们的 app 运行太慢了。”我并不是想说速度一点也不重要,我只是想说速度不再是最重要的器械;它不再是你最贵的资本。

速度是独一重要的器械

当你在编程的背景下说 速度 时,你平日是说机能,也就是 CPU 周期。当你的 CEO 在编程的背景下说 速度 时,他指的是营业速度,最重要的指标是产品上市的时光。根本上,你的产品/web 法度榜样是多么的快并不重要。它是用什么竽暌癸言写的也不重要。甚至它须要花费若干钱也不重要。在一天停止时,让你的公司存活下来或者逝世去的独一事物就是产品上市时光。我不只是说创虻公司的设法主意 -- 你开端赚钱须要花费多久,更多的是“大年夜设法主意到客户手中”的时光刻日。企业可以或许存活下来的独一办法就是比你的竞争敌手更快地立异。如不雅在你的产品上市之前,你的竞争敌手已经提前上市了,那么你想出了若干好的主意也将不再重要。你必须第一个上市,或者至少能跟上。一但你放慢了脚步,你就输了。

  • 企业可以或许存活下来的独一办法就是比你的竞争敌手更快地立异。

一个微办事的案例

像 Amazon、Google 和 Netflix 如许的公司明白快速进步的重要性。他们创建了一个营业体系,可以应用这个体系敏捷地进步和快速的立异。微办事是针对他们的问题的解决筹划。这篇文┞仿不谈你是否应当应用微办事,然则至少要懂得为什么 Amazon 和 Google 认为他们应当应用微办事。

微办事本来就很慢。微办事的重要概念是用收集调用来打破界线。这意味着你正在把应用的函数调用(几个 cpu 周期)改变为一个收集调用。没有什么比这更影响机能了。和 CPU 比拟较,收集调用真的很慢。然则这些大年夜公司仍然选择应用微办事。我所知道的架构琅绫擎没有比微办事还要慢的了。微办事最大年夜的弊病就是它的机能,然则最大年夜的长处就是上市的时光。经由过程在较小的项目和代码库上建立团队,一个公司可以或许以更快的速度进行迭代和立异。这恰好注解了,异常大年夜的公司也很在意上市时光,而不仅仅只是只有创虻公司。

CPU 不是你的瓶颈

如不雅你在写一个收集应用法度榜样,如 web 办事器,很有可能的情况会是,CPU 时光并不是你的法度榜样的瓶颈。当你的 web 办事器处理一个请求时,可能会进行几回收集调用,例如到数据库,或者像 Redis 如许的缓存办事器。固然这些办事本身可能比较快速,然则对它们的收集调用却很慢。这里有一篇很好的关于特定操作的速度差别的博客文┞仿。在这篇文┞仿里,作者把 CPU 周期时光缩放到更轻易懂得的仁攀类时光。如不雅一个零丁的 CPU 周期等同于 1 秒,那么一个大年夜 California 到 New York 的收集调用将相当于 4 年。那就说清楚明了收集调用是若干的慢。按一些粗略估计,我们可以假设在同一数据中间内的通俗收集调用大年夜约须要 3 毫秒。这相当于我们“仁攀类比例” 3 个月。如今假设你的法度榜样是高 CPU 密集型,这须要 100000 个 CPU 周期来对单一调用进行响应。这相当于方才跨越 1 天。如今让我们假设你应用的是一种要慢 5 倍的说话,这将须要大年夜约 5 天。很好,将那与我们 3 个月的收集调用时光比拟,4 天的差别就显抱病不是很重要了。如不雅有工资了一个担保不得不至少等待 3 个月,我不认为额外的 4 天对他们来嗣魅真的很重要。

我最爱好 Python 的一点是,它可以让你一次优化一点点代码。假设你有一个 Python 的办法,你发明它是你的瓶颈。你对它优化过几回,可能遵守这里和那边的一些指导,如今,你很肯定 Python 本身就是你的瓶颈。Python 有调用 C 代码的才能,这意味着,你可以用 C 重写这个办法来削减机能问题。你可以一次重写一个如许的办法。这个过程许可你用任何可以编译为 C 兼容汇编法度榜样的说话,编写优胜优化后的瓶颈办法。这让你可以或许在大年夜多半时光应用 Python 编写,只在须要的时刻都才用较初级的说话来写代码。

膳绫擎所说的最终意思是,尽管 Python 速度慢,然则这并不重要。说话的速度(或者 CPU 时光)几乎大年夜来不是问题。实际上谷歌曾经就章一ㄅ念做过一个研究,并且他们就此揭橥过一篇论文。那篇论文阐述了设计高吞吐量的体系。在结论里,他们说到:

再次强调:

  • CPU 时光几乎不是限制身分。

如不雅 CPU 时光是一个问题怎么办?

优化 Python

那么,Python 更快一些吗?


  推荐阅读

  一个白牌厂商视角:极简交换机NOS演进史

传统的交换机操作体系(简称NOS)对大年夜众是一个相对封闭的范畴。跟着白牌交换机的高速增长,NOS纷纷开源,NOS的开辟者也大年夜只有设备商工程师,扩大年夜到互联网,运营商以及云计算的大>>>详细阅读


本文标题:告诉你为什么Python有点慢,但我却无所谓?

地址:http://www.17bianji.com/lsqh/34995.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)