就 Big-O 而言,你可以认为对你的法度榜样而言,所有的说话都是 O(n),个中 n 是代码或者指令的行数。对于同样的指令,它们以同样的速度增长。对于渐进增长,一种说话的速度快慢并不重要,所有说话都是雷同的。在这个逻辑下,你可以说,为你的应用法度榜样选择一种说话仅仅是因为它的“快速”是过早优化的最终情势。钠揭捉?择某些预期快速的器械,却没有测量,也不睬解瓶颈将在哪里。
- 为您的应悠揭捉?择说话只是因为它的“快速”,是过早优化的最终情势。
有一种叫做 Cython 的编程说话,它是 Python 的超集。它几乎是 Python 和 C 的归并,是一种渐进类型的说话。任何 Python 代码都是有效的 Cython 代码,Cython 代码可以编译成 C 代码。应用 Cython,你可以编写一个模块或者一个办法,并逐渐进步到越来越多的 C 类型和机能。你可以将 C 类型和 Python 的鸭子类型混在一路。应用 Cython,你可以获得混淆后的完美组合,只在瓶颈处进行优化,同时在其他所有处所不掉去 Python 的美丽。
当您最终碰到 Python 的机能问题阻碍时,你不须要把你的┞符个代码库用另一种不合的说话来编写。你只须要用 Cython 重写几个函数,几乎就能获得你所须要的机能。这就是星战前夕采取的策略。这是一个大年夜很多玩家的电脑游戏,在全部架构中应用 Python 和 Cython。它们经由过程优化 C/Cython 中的瓶颈来实现游戏级其余机能。如不雅这个策略对他们有效,那么它应当对任何人都有赞助。或者,还有其他办法来竽暌古化你的 Python。例如,PyPy 是一个 Python 的 JIT 实现,它经由过程应用 PyPy 替掉落 CPython(这是 Python 的默认实现),为长时光运行的应用法度榜样供给重要的运行时改进(如 web 办事器)。
让我们回想一下要点:
- 优化你最贵的资本。那就是你,而不是计算机。
- 选择一种说话/框架/架构来赞助你快速开辟(比如 Python)。不要仅仅因为某些技巧的快而选择它们。
- 当你碰到机能问题时,请找到瓶颈地点。
- 你的瓶颈很可能不是 CPU 或者 Python 本身。
- 如不雅 Python 成为你的瓶颈(你已经优化过你的算法),那么可以转向热点的 Cython 或者 C。
- 尽情享受可以快速做落成作的乐趣。
我欲望你乡⒚?读这篇文┞仿,就像我爱好写这篇文┞仿一样。如不雅你想说感谢,请为我点下赞。别的,如不雅某个时刻你想和我评论辩论 Python,你可以在 twitter 上艾特我(@nhumrich),或者你可以在 Python slack channel 找到我。
作者简介:
Nick Humrich -- 保持采掏出续交付的办法,并为之写了很多对象。同是照样一名 Python 黑客与技巧狂热者,今朝是一名 DevOps 工程师。
【编辑推荐】
- Python vs Ruby: 谁是最好的 web 开辟说话?
- Python说话在将来的成长前景
- 用Python实现每秒处理120万次HTTP请求
- Python多过程并行编程实践: mpi4py 的应用
- Python发送邮件脚本
推荐阅读
传统的交换机操作体系(简称NOS)对大年夜众是一个相对封闭的范畴。跟着白牌交换机的高速增长,NOS纷纷开源,NOS的开辟者也大年夜只有设备商工程师,扩大年夜到互联网,运营商以及云计算的大>>>详细阅读
地址:http://www.17bianji.com/lsqh/34995.html
1/2 1