中国网管论坛

 找回密码
 注册
QQ登录 只需一步,快速开始
网管赚钱丨推荐设2345主页游戏攻略/CS/LOL/DNFLinux常用命令大全云计算/云技术频道
IP地址在线计算器网管软件,网管工具论坛积分购买 
查看: 727|回复: 0
打印 上一主题 下一主题

[分享交流] Python速度虽然慢,但它工作效率高啊!

[复制链接]
跳转到指定楼层
楼主
发表于 2017-7-12 15:19:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Python速度虽然慢,但它工作效率高啊!
之前,程序的运行时间相当长。CPU 资源和内存资源都十分珍贵,程序的运行时间在这种情况下是一个重要指标。计算机本身十分昂贵,当然还有随之而来昂贵的电力消耗。优化这些资源就十分必要,因为在商业世界有一个永恒的规则:
优化你最昂贵的资源。【兄/弟连Python培训】专注IT培训11年,学习5个月包就业! 毕业拿高薪!赵老师电话 1771>011>6169/ 联·系我免·费领·取兄/弟连视频教程~

历史上,程序最昂贵的资源是计算机的运行时间。这也就导致了对计算机科学的研究更专注于不同算法的效率。然而在当下环境中,这已经不再适用,现在硅的价格已经十分便宜了。是真的非常便宜。运行时间不再是你最昂贵的资源。一个公司最昂贵的资源现在是其雇佣的员工的时间。也就是正在看这篇文章的你自己的时间。对现在的公司来说,完成项目比让项目跑得更快更重要。这点非常重要,这里再次强调:

完成项目比让项目跑得更快更重要。
你也许会说“我们公司对性能要求很高,我构建的网站应用需要所有的请求在 X 毫秒内返回。”或者“客户认为我们的应用慢而放弃使用我们的应用。”在这里我不是说速度根本不重要,我只是想说明速度不再是最重要的指标,因为它不再是你最昂贵的资源。

速度!
速度是唯一重要的事情
在编程的世界中当你提到速度,一般是指程序的性能,也就是 CPU 周期。而当你的 CEO 提到速度,他通常指的是业务上的速度,其中最重要的是投入市场的时间。你的产品或网络应用有多快并不重要,应用采用哪种语言编写的也不重要,甚至是使项目运行投入了多少资金都不重要。最终,唯一能够让你的公司存活下来的是产品投入市场的时间。
这里不是指初创公司观念中的盈利时间,而更多是从想法转换到实际消费者手中所花费的时间。在商业世界中能存活下来的唯一方法是比你的竞争对手更快地进行创新。如果你的竞争对手比你更早地发布产品,那么你有再多的好点子也无济于事。你必须成为市场的第一个进入者,或至少要赶上领先的节奏。一旦你掉队了,那么你就大势已去。
在商业世界中能存活下来的唯一方法是比你竞争对手更快地进行创新。

CPU 并非你的瓶颈

如果你编写像网络服务器上的网络应用,那么 CPU 时间可能并非你应用的瓶颈。当你的网络服务器处理一个请求,它可能会需要调用多个网络调用,例如数据库或 Redis 缓存。这些服务本身速度很快,然而网络调用的过程却很慢。一篇博客很好地描述了各个特定操作速度上的差别。其中,作者将 CPU 时间对应到人们易于理解的时间。如果单个 CPU 周期对应一秒的话,一个从加利福尼亚到纽约的网络调用就大约相当于 4 年。
对,网络调用就是这么慢。粗略地估计,在同一数据中心内的一个普通的网络调用需要 3 毫秒,这在前面的对应关系下相当于 3 个月。现在假如你的程序是 CPU 密集型的,需要花费 100,000 个 CPU 周期来处理一次调用。按之前的比例来算,这些时间相当于 1 天。那么如果你用一个慢 5 倍的语言,它也就只花费了 5 天。相对于 3 个月的网络调用,4 天的差别就无足轻重了。如果用户在等待一个至少需要 3 个月的包裹,那么 4 天的差别相对来说就不那么重要了。
说了这么多我只是想说,即便 python 很慢,但这并不重要。语言的速度(也就是 CPU 时间)几乎不会导致问题。谷歌就这个概念做过一个研究,并写了一篇论文。论文中谈论了设计高吞吐量的系统。在结论中这样描述到:
在一个高吞吐量的环境中使用一个解释型语言看似矛盾,但是我们发现 CPU 时间几乎不是瓶颈因素,表达性强的语言意味着大部分代码是短小的,大多数时间花费在了 I/O 以及原生代码运行时上。此外,解释型的实现所具备的灵活性十分有用,它方便了我们在语言层面上的试验,也方便了我们探索将计算分布到多台机器上的方法。

简单说来:
CPU 时间几乎不是瓶颈因素。
那如果 CPU 时间的确是系统的瓶颈呢?
你可能会说“这观点很好,但是我们确实在 CPU 上遇到了瓶颈,造成了我们网络应用的速度缓慢”,或者“在服务器上 X 语言相对 Y 语言需要更少的硬件资源来运行。”这可能都是事实。但网络应用的优势就是你可以几乎无限地进行负载均衡。换而言之,就是使用更多的硬件资源。当然 Python 相较其他语言,如 C 语言,可能需要更多硬件资源。那就使用更多的硬件来解决这个问题。硬件相对于你的人工时间便宜许多。如果你一年内节约了几周的开发时间,这就远胜于你在硬件上所节约下来的花费。
您需要登录后才可以回帖 登录 | 注册
本版积分规则
QQ|小黑屋|手机版|Archiver|武松娱乐 ( 沪ICP备08026629号 )  GMT+8, 2018-2-26 07:33
Powered by Discuz! X3.1 © 1999-2014 bitsCN.com
快速回复 返回顶部 返回列表
武松娱乐注册