问题标签 [row-major-order]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C中的行主要顺序作为命令行参数
我需要从命令行通过一个看起来像这样的 txt 文件传入一个 2D 区域(矩阵):
我正在使用 C 并且需要以行优先顺序使用它,所以我正在尝试这样做:
这不起作用,是因为它需要是一维数组吗?我是否只允许使用常规一维数组进行行优先排序?我得到的错误是“数组类型有不完整的元素类型'int []'”
javascript - WebGL2 row_major 限定符意外工作
在win10 Chrome 81.0.4044.129
我得到了结果:带有 row_major 限定符的着色器
我无法弄清楚为什么它看起来像这样。
当我删除 row_major 限定符时,我得到了另一个结果:
没有 row_major 限定符的着色器(不要关心下图中的 html 措辞,这是 column_major)
这是预期的结果。
更新
说清楚:我的问题是两个结果应该相互转置,因为它们使用相同的矩阵数据。着色器尝试将矩阵中从 0 到 1 的每个浮点数绘制到红色通道。然而,具有 row_major 的着色器(第一个结果)显示矩阵中的元素为 0 或 1,但事实并非如此。第二个结果完全符合预期。
performance - 如何确定内存组织是否遵循行主要顺序或列主要顺序?
如何确定内存组织是否遵循行优先顺序或列优先顺序?我学习了这个新概念并且知道如果我们知道什么内存组织遵循行优先顺序或列优先顺序,我们可以使我们的数组以这样一种方式运行,即通过减少代码的数量来提高性能页面错误。但我无法找到“如何确定内存组织是否遵循行优先顺序或列优先顺序?”。
arrays - 为什么在 C 中迭代这样的数组效率低下?
我正在读一本书,其中有这一段:
C 中的数组可以看作是一块连续的内存。更准确地说,数组的最后一维是连续的部分。我们称之为行主要顺序。了解这一点以及缓存故障在访问未缓存数据时将完整的缓存行加载到缓存中以防止后续缓存故障这一事实,我们可以看到为什么使用 array[0][0] 访问维度为 10000x10000 的数组可能会加载 array[ 0][1] 在缓存中,但是在之后访问 array[1][0] 会产生第二个缓存错误,因为它距离 array[0][0] 是 sizeof(type)*10000 字节,因此肯定不会在同一缓存行上。这就是为什么这样的迭代效率低下的原因:
您能否向我解释一下他们在本段中试图解释的内容以及他们正在谈论的“缓存错误”是什么?
c - 如果 C 是行优先顺序,为什么 ARM 内部代码假定列优先顺序?
我不确定问这个问题的最佳地点在哪里,但我目前正在使用 ARM 内部函数并遵循本指南:https ://developer.arm.com/documentation/102467/0100/Matrix-multiplication-example
但是,那里的代码是假设数组以列优先顺序存储的。我一直认为 C 数组是按行存储的。他们为什么会这样假设?
编辑:例如,如果不是这个:
他们这样做了:
由于按 C[0]、C[1]、C[2]、C[3] 的顺序访问 C 而不是按 C[0]、C[2]、C 的顺序访问 C 的空间局部性,代码将运行得更快[1]、C[3](其中 C[0]、C[1]、C[2]、C[3] 在内存中是连续的)。
c# - C#中的二维数组行主要顺序
如何在 C# 中使用行主要顺序存储二维数组中的数据?我尝试使用列专业,一切顺利,但是当涉及到行专业时,我的代码就中断了(运行时错误)
c++ - 我对数组的行主要顺序的尝试显示了正确的值,但索引了不正确的值
我创建了一个名为 matrix 的类,它将值存储在一维数组中,但将其输出为二维数组。我已经包含了打印语句来显示应该放入数组中的确切值,但是当我使用打印函数对其进行索引时,它在第二行最后一个索引上显示不正确的值。不完全确定我做错了什么。