如何分析指针别名的性能影响?

时间:2013-10-21 12:26:35

标签: c++ visual-studio-2012 profiling visual-studio-2013

我的代码使用了许多适用于MATLAB / FORTRAN样式矢量操作的重复且大部分代数运算。

我一直在考虑改用std :: valarray甚至是Blitz ++来利用这一点。但是在进行切换之前,我如何分析C ++和FORTRAN之间性能差距的主要贡献者之一 - 指针别名 - 正在影响我的代码的性能,而不是通过 restrict 并测试差异。

Visual Studio 2012/2013是否提供了一些实现此目的的方法?也许是一个不同的IDE?

1 个答案:

答案 0 :(得分:0)

C / C ++语言没有经过优化,在数学方面做得不好。对于那些操作,我只建议尝试改变语言,或者,如果你真的想要继续使用c / c ++,那就非常谨慎地写作。指定不同的语言以最好的方式做他们所做的事情,但它几乎从来没有同样的事情。

据我所知,没有办法更好地优化C / C ++中已有的大部分功能,尤其是非标准包(boost),因为它们应该尽可能简单。调试包也因调试函数而过载,因此速度较慢,但​​我也看到了一些具有安全检查的发布函数,例如“对象属于我”或“订阅超出范围检查”。如果这是关于别名,autopoiters,其他指针类型或类似东西的原子函数,它们只是更好,并且它们可以尽可能地工作。

你也可以尝试告诉编译器你想要更多的压缩级别,如果可能的话,这可能会加快速度,但正如我之前所说,使用为数学做的语言来做数学。最后,如果您可以使用fortran或其他语言创建asm对象,则可以使用c / c ++将此文件链接到您的代码。