专注于 Visual C++,您是否体验过使用throw()
(即__declspec(nothrow)
)非抛出规范在 C++ 代码中的显着性能提升?它真的对优化器有帮助吗?是否有任何基准显示性能提升?
我在互联网上发现了不同的(相反的)建议:
Boost exception-specification 的基本原理是反对 的,相反,Larry Osterman在他的博客文章中throw()
似乎支持它: Why add a throw() to your methods?
(我想澄清一下,我对 VC++ 特定代码感兴趣;我知道在 GCC 中,throw()
由于运行时检查,规范实际上可能是“悲观化”。)
PS阅读 ATL 标头,我发现它throw()
被普遍使用;此外,我在这篇 MSDN 文章中发现了一个方便的 C++ RAIIunique_handle
类,它也使用了规范。throw()