代码之家  ›  专栏  ›  技术社区  ›  Brian Hooper

VB数组中哪个索引变化最快?

vb6
  •  1
  • Brian Hooper  · 技术社区  · 14 年前

    当使用visualbasic二维数组时,哪个索引变化最快?换句话说,当填充数组时,我应该写。。。

    For i = 1 To 30
        For j = 1 To 30
            myarray (i,j) = something
        Next
    Next
    

    For i = 1 To 30
        For j = 1 To 30
            myarray (j, i) = something
        Next
    Next
    

    (或者它有很大的不同)?

    2 回复  |  直到 14 年前
        1
  •  3
  •   MarkJ    14 年前

    Column major . VB6语言 uses COM SAFEARRAYs lays them out in column-major order

    For i = 1 To 30 
        For j = 1 To 30 
            myarray (j, i) = something 
        Next 
    Next 
    

    如果你 真正地 要加快数组处理速度,请考虑中的提示 Advanced Visual Basic by Matt Curland

    例如,访问2D SAFEARRAY要比访问1D SAFEARRAY慢得多,因此为了将所有数组项设置为相同的值,可以更快地绕过VB6的SAFEARRAY描述符并临时创建一个自己的SAFEARRAY描述符。第33页。

    Remove array bounds checks “在项目属性的编译选项中。

        2
  •  1
  •   Henk Holterman    14 年前

    但我希望第一个索引是“较低”的维度,即大块,而下面的索引位置则更加细粒度。

    编辑: 看来我错了。VB6使用列优先的方法。

    你必须测量,但使用 降低