c++ - NULL 与抛出和性能

标签 c++ performance exception null

我有一个类:

class Vector {
    public:
    element* get(int i);
    private:
    element* getIfExists(int i):
};

get 调用 getIfExists;如果元素存在,则返回它,如果不存在,则执行某些操作。 getIfExists 可以表示某些元素 i 不存在 通过抛出异常或返回 NULL。

问题:性能上会有什么不同吗?在一种情况下,get 需要检查 ==NULL,在另一种情况下 try...catch

最佳答案

这是一个设计问题,而不是性能问题。如果是异常情况——比如在你的 get 函数中——那么抛出一个异常;甚至更好地触发断言,因为违反函数前提条件是编程错误。如果它是预期的情况 - 就像在您的 getIfExist 函数中一样 - 那么不要抛出异常。

关于性能,存在零成本异常实现(尽管并非所有编译器都使用该策略)。这意味着只有在抛出异常时才会支付开销,这应该是……好吧……异常。

关于c++ - NULL 与抛出和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7870040/

相关文章:

exception - 尝试/排除/最终订购

c++ - GetProcAddress 和函数指针 - 这是正确的吗?

.net - 何时使用.NET BufferedStream 类?

Ruby 自定义错误类 : inheritance of the message attribute

java - 在每个方法中添加 throws 签名

multithreading - 如何使 Julia 中的多线程与线程数成比例?

C++:递归地将参数类型与类模板类型匹配

c++ - 独立于共享库的 linux 二进制文件

python - 将 cv2 形状从 python 转换为 c++

php - 如何高效地使用 SQL 以半小时为间隔检索数据?