【发布时间】:2014-12-07 20:11:18
【问题描述】:
来自 C++ 背景,我学会了将异常的使用限制在特殊情况下,我对Python's cheap exceptions 感到非常惊讶。事实上,像迭代这样的一些语言特性似乎是建立在抛出异常的基础上的。考虑到 (python) 解释器必须保证自己的完整性并因此无论如何都要进行多次检查,这是有道理的。
期望廉价异常在解释语言中是正常的是否有意义?
编辑:
为了明确这个问题主要不是针对性能问题,我应该补充一点,我尝试通过学习新语言来扩展我的编程技能。我可能永远不会在 C++ 或 Pascal 中的非异常情况下使用异常,但在 python 中我显然应该(而且这可能不是唯一的语言)。而且因为如果我使用或不使用异常,它会对我的代码产生结构上的影响,所以一个简单的指南/经验法则将有助于开始使用一种新语言。..
【问题讨论】:
-
我不确定一个人是否应该“期待”任何事情......在绩效衡量方面,请始终参考文档和分析。
-
@MattCoubrough 主要的不是性能,而是解决问题的方式。
-
我想我的评论是想说 “将关于编程范式的假设从一种语言投射到另一种语言是很危险的” 即使“解释”的概念在语言(即 JIT 等)
-
并非如此。在 ruby 中,异常 (
raise/rescue) 比其他控制流 (break或catch/throw) 慢一到两个数量级。 robotlibrarian.billdueber.com/2011/05/… -
@MattCoubrough 有趣的一点,我很害怕:There is no such thing as a “compiled language” or “interpreted language”
标签: python performance exception-handling coding-style interpreter