【发布时间】:2013-02-16 18:30:20
【问题描述】:
我正在用C构造一个函数的偏导数。这个过程主要由大量的小循环组成。每个循环负责填充矩阵的一列。因为矩阵的大小是巨大的,所以代码应该被高效地编写。我有许多实施计划,我不想详细说明。
我知道智能编译器会尝试自动利用缓存。但我想了解更多使用缓存和编写高效代码和高效循环的细节。如果提供一些资源或网站,我将不胜感激,这样我就可以在减少内存访问时间和利用人方面了解更多关于编写有效代码的知识。
我知道我的要求看起来很草率,但我不是计算机专家。我做了一些研究,但没有成功。 因此,感谢您的帮助。
谢谢
【问题讨论】:
-
如果矩阵是 C 中的一个大数组,你应该逐行填充,而不是逐列填充,以免缓存未命中而伤害自己。
-
矩阵是稀疏的,因此用三个向量来描述矩阵。
-
@Pouya 哦...如果矩阵是稀疏的,那会改变一切...
-
最里面的循环里面有什么?你是在调用你在那里取偏导数的函数吗?如果是这样,你在外面做什么可能就没有多大关系了。
标签: c performance caching loops optimization