如何分析指针锯齿的性能影响

How can I profile the performance effects of pointer aliasing?

本文关键字:性能 影响 指针      更新时间:2023-10-16

我的代码使用了大量重复的、主要是代数运算,这些运算适用于 MATLAB/FORTRAN 风格的向量运算。

我一直在考虑切换到std::valarray甚至Blitz++来利用这一点。但是在进行切换之前,我如何分析造成C++和FORTRAN之间性能差距的主要因素之一(指针混叠)对代码性能的影响程度,而不是声明所有限制并测试差异。

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

C/C++ 语言没有优化,在做数学事情时表现得不是很好。对于这些操作,我只建议尝试更改语言,或者,如果您真的想继续使用 c/c++,请格外小心地编写。不同的语言被指定以最好的方式做他们所做的事情,但它几乎从来不是同一件事。

据我所知,没有办法更好地优化C/C++中大多数已经存在的功能,尤其是非标准包(boost),因为它们被认为尽可能简单。调试包也过载了调试函数,因此它们速度较慢,但我也看到一些具有安全检查的发布函数,例如"对象是否属于我"或"订阅者超出范围检查"。如果这是关于原子函数,如别名,自动定位器,其他指针类型或类似的东西,它们再好不过了,并且它们尽可能地工作。

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