Jak*_* M. 2 c++ performance null exception
我有一节课:
class Vector {
public:
element* get(int i);
private:
element* getIfExists(int i):
};
Run Code Online (Sandbox Code Playgroud)
get
调用getIfExists
; 如果元素存在,则返回它,如果不存在,则执行某些操作.getIfExists
可以i
通过抛出异常或返回NULL 来表示某些元素不存在.
问题:性能会有差异吗?在一种情况下,get
需要检查==NULL
,在另一种情况下try... catch
.
它是设计问题,而不是性能问题.如果它是一个特殊的情况 - 就像你的get
函数 - 然后抛出异常; 甚至更好地触发断言,因为违反函数前置条件是编程错误.如果它在你的getIfExist
函数中是一个预期的大小写 - 那么就不要抛出异常.
关于性能,存在零成本异常实现(尽管并非所有编译器都使用该策略).这意味着只有在抛出异常时才支付开销,这应该是...嗯......特别.
归档时间: |
|
查看次数: |
285 次 |
最近记录: |