【问题标题】:Are "cheap exceptions" typical for interpreted languages?“便宜的例外”是解释语言的典型特征吗?
【发布时间】:2014-12-07 20:11:18
【问题描述】:

来自 C++ 背景,我学会了将异常的使用限制在特殊情况下,我对Python's cheap exceptions 感到非常惊讶。事实上,像迭代这样的一些语言特性似乎是建立在抛出异常的基础上的。考虑到 (python) 解释器必须保证自己的完整性并因此无论如何都要进行多次检查,这是有道理的。

期望廉价异常在解释语言中是正常的是否有意义?

编辑:

为了明确这个问题主要不是针对性能问题,我应该补充一点,我尝试通过学习新语言来扩展我的编程技能。我可能永远不会在 C++ 或 Pascal 中的非异常情况下使用异常,但在 python 中我显然应该(而且这可能不是唯一的语言)。而且因为如果我使用或不使用异常,它会对我的代码产生结构上的影响,所以一个简单的指南/经验法则将有助于开始使用一种新语言。..

【问题讨论】:

  • 我不确定一个人是否应该“期待”任何事情......在绩效衡量方面,请始终参考文档和分析。
  • @MattCoubrough 主要的不是性能,而是解决问题的方式。
  • 我想我的评论是想说 “将关于编程范式的假设从一种语言投射到另一种语言是很危险的” 即使“解释”的概念在语言(即 JIT 等)
  • 并非如此。在 ruby​​ 中,异常 (raise/rescue) 比其他控制流 (breakcatch/throw) 慢一到两个数量级。 robotlibrarian.billdueber.com/2011/05/…

标签: python performance exception-handling coding-style interpreter


【解决方案1】:

从角度来看:

在 C++ 中,除了例外,一切都很便宜;

在 Python 中,异常与正常情况一样耗时。

【讨论】:

  • 当然(+1)。在 C++ 中,如果没有抛出异常,异常处理本身也(或可能)很便宜,但抛出应该被认为是可扩展的。
猜你喜欢
  • 2015-07-21
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 2015-02-19
  • 2011-06-21
  • 2011-11-09
  • 2010-12-13
  • 1970-01-01
相关资源
最近更新 更多