我有一段 C 代码计算稀疏矩阵的 LU 分解的问题。在那里,我编写了一些具有各种优化的不同例程。根据矩阵中非零元素的结构,一些实现变得非常快,但对于下一个示例矩阵,它变得太慢了。现在我需要一个工具来分析应用程序并向我显示代码在哪里等待来自内存的新数据和/或如何使用缓存。我已经尝试过 valgrind(cachegrind/callgrind) 但是开销太大并且不同实现的运行时之间的比例完全改变了。
是否有任何其他开源工具(Linux、BSD)来分析内存流量和类似问题?他们不应该使用内核模块。
我有一段 C 代码计算稀疏矩阵的 LU 分解的问题。在那里,我编写了一些具有各种优化的不同例程。根据矩阵中非零元素的结构,一些实现变得非常快,但对于下一个示例矩阵,它变得太慢了。现在我需要一个工具来分析应用程序并向我显示代码在哪里等待来自内存的新数据和/或如何使用缓存。我已经尝试过 valgrind(cachegrind/callgrind) 但是开销太大并且不同实现的运行时之间的比例完全改变了。
是否有任何其他开源工具(Linux、BSD)来分析内存流量和类似问题?他们不应该使用内核模块。