zoukankan      html  css  js  c++  java
  • C-order/Fortran-order(Row-/Column-major order)

    1. row-major / column-major order

    无论是行序优先还是列序优先,其实在计算机计算中,指的都是在线性空间(linear storage,如 RAM,也即连续内存存储 contiguous in ,memory)存储多维数组(multidimensional arrays)的方式。


    这里写图片描述

    数据的分布方式(data layout)对于在不同编程语言间正确地传递多维数组是十分关键的。

    2. 地址计算

    这里我们将多维数组的概念泛化为更高维。对于 d 维数组 N1×N2××Nd,该数组中的一个元素为 (n1,n2,,nd)(其中 nk[0,Nk1],从 0 开始计数),其在内存中的地址应当为:

    • 行序(row-major order):对于行序,最后一维是连续的,

      nd+Nd(nd1+Nd1(nd2+Nd2(+N2n1)))=k=1d=k+1dNnk

    • 列序(column-major order):对于列序,第一维是连续的,

      n1+N1(n2+N2(n3+N3(+Nd1nd))))=k=1d(=1k1N)nk

    references

  • 相关阅读:
    golang 内存模型
    go-设计思想
    扁平化团队的实质
    技术团队的管理体系
    技术团队的目标管理
    从0到1打造直播 App
    管理你的项目
    JavaEE开发基础
    Java调优知识汇总
    从技术走向管理读书笔记
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9422239.html
Copyright © 2011-2022 走看看