【问题标题】:Pointer assignment versus pointer arithmetic指针赋值与指针算术
【发布时间】:2013-03-19 02:41:11
【问题描述】:

我正在处理的数据集的规模从可能非常小到数亿不等。

使用连续数据集时,将新值分配给指针与使用指针算术前进到所需位置时,在功能或性能方面是否有任何差异?

例如,当进行到数据的下一个成员时,我可以简单地将指针加一,或者将我的工作指针分配给那个内存地址(假设我出于某种原因已经有了它)。

使用 Visual Studio 2012 作为编译器在 Windows 下运行。

【问题讨论】:

  • 是否存在可预测的模式,您将在其中访问此数据结构的成员,或者将完全随机访问?
  • 它被分成可预测的数据块,但块之间的距离并不总是相同的。所以,两者都有一点。

标签: c++ c arrays performance pointers


【解决方案1】:

至于性能,根据 Andrei Alexandrescu 最近的说法(see this link,有一个指向他在那里发表的精彩演讲的视频的链接),对于现代机器上的连续访问,您应该更喜欢对数组进行索引而不是指针算法。

但是,优化有一个永恒的规则:衡量它! :)

没有更多信息,我无话可说:除了“否”之外的功能差异。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    相关资源
    最近更新 更多