- 主题:大家都用C++的try catch吗?
try catch不抛出异常性能也往下掉,沉重的运行时开销
不过确实有很多推崇try catch,大概因为C++本身就是写bug,相比bug,两害相权取其轻反
【 在 overcomeunic 的大作中提到: 】
: 推荐个毛线
: 但凡持续抛异常,性能掉到底
--
FROM 221.218.143.*
到底是多“点”很关键
暂时不讨论偶发运行的程序块,影响不大。对于那些反复常态运行的,每次进入try都有开销,包含越大、代价容易越大,而且阻止内部优化,例如缓存啥的几乎全没了,对循环更是灾难,同样的代码编译出来肯定慢
【 在 z16166 的大作中提到: 】
: 不抛异常时,只有建立exception frame的那点开销吧
:
--
FROM 221.218.143.*
“try catch是zero-cost”我不信
【 在 z16166 的大作中提到: 】
: windows上,32位程序需要建立exception frame,64位没有建立exception frame的运行时开销,在没发生exception时是zero-cost的
:
--
FROM 1.202.157.*
所以根源在于,你认为zero-cost是指“在编译期生成代码”,生成了代码,就是zero-cost?
【 在 z16166 的大作中提到: 】
: 请仔细阅读,是x64在没抛出异常时才是zero-cost的;抛出异常时当然不是zero-cost的,要查表处理异常。
: x64的异常处理信息是编译期写入了PE文件的。
:
--
FROM 1.202.157.*
对,不过也确实是好多年前。有个人说32位和64位不一样,当时是32位
但我也谨慎怀疑64位性能不掉,就像一个原理错误的公式,修修补补用也许能用,但指望它浴火重生就过分了
【 在 lwp 的大作中提到: 】
: 不抛异常性能往下掉是你测试测出来的结论?
: :
--
FROM 1.202.157.*
刻画得相当精准,前一种刻画的正是我们这一类开发者
【 在 javaboy 的大作中提到: 】
: 其实绝大多数选用C++的人,追求的是zero-cost抽象:手上写的高等语法,脑子里盘算着这么写最后生成出来的机器语言会 ...
--
FROM 124.64.17.*