如何确定内存组织是否遵循行主要顺序或列主要顺序?
how to determine if a memory organization follows row major order or column major order?
如何判断内存组织是行优先还是列优先?
我学到了这个新概念,并且知道如果我们知道什么是内存组织遵循行优先顺序或列优先顺序,我们可以使我们的数组 运行 以代码性能提高的方式减少页面错误的数量。
但是我找不到 "How to determine if a memory organization follows a row-major order or column-major order?"。
这在某种程度上取决于您使用的语言...您没有说明。
您可以通过创建一个 2 行 3 列数组并假设它将以行优先顺序存储,然后检查来进行测试。所以创建这个:
0 1 2
3 4 5
现在看看内存中的字节数。如果他们去:
0 1 2 3 4 5
它是行优先顺序。如果他们去:
0 3 1 4 2 5
您的程序使用列优先顺序。
通常,C 使用行优先排序,而 Fortran 使用列优先排序。我说这取决于 "to some extent",因为例如 Python,您可以指定任一顺序,甚至可以根据具体情况将它们混合在一起程序。
如何判断内存组织是行优先还是列优先? 我学到了这个新概念,并且知道如果我们知道什么是内存组织遵循行优先顺序或列优先顺序,我们可以使我们的数组 运行 以代码性能提高的方式减少页面错误的数量。 但是我找不到 "How to determine if a memory organization follows a row-major order or column-major order?"。
这在某种程度上取决于您使用的语言...您没有说明。
您可以通过创建一个 2 行 3 列数组并假设它将以行优先顺序存储,然后检查来进行测试。所以创建这个:
0 1 2
3 4 5
现在看看内存中的字节数。如果他们去:
0 1 2 3 4 5
它是行优先顺序。如果他们去:
0 3 1 4 2 5
您的程序使用列优先顺序。
通常,C 使用行优先排序,而 Fortran 使用列优先排序。我说这取决于 "to some extent",因为例如 Python,您可以指定任一顺序,甚至可以根据具体情况将它们混合在一起程序。