【发布时间】:2011-03-27 06:39:29
【问题描述】:
我们都知道 -> 与 .在 c/c++ 中访问成员的速度差异,但我很难找到简单点运算符的实际成本的任何线索。
我想它类似于结构地址 + 偏移量,还假设偏移量是所有先前成员的所有 sizeof-s 的总和。这(大致)正确吗?
那么与->相比,谁快得多?两次?
(在 SO 上看到了一些 asm,关于 .access 是一条指令,我想它有一些魔力)
另外,与局部变量相比,慢多少?
谢谢
编辑:
我猜我没问对。
尝试清理:
通过“-> vs.”我的意思是“使用指针访问结构”与“直接成员访问” - (link)。
然后我很好奇:“好吧,点访问本身呢?它确实要花一些钱。”所以我问了这个问题。
“点运算符成本 c/c++”本身可能是荒谬/无意义/幼稚的问题,但它确实得到了我正在寻找的答案。现在不能说更好了。
谢谢
【问题讨论】:
-
完全依赖于实现,C++ 是一种语言而不是输出。观察您的特定编译器给出的输出。当然,我们应该清楚,这些信息并不规定任何设计选择,因为您应该选择更清洁,而不是更快(在微优化级别)。
-
我不明白为什么
. operator和'-> operator` 之间应该有任何区别。关于我能想到的唯一区别是引用的局部性,因此变量更有可能在缓存中(但这不是您要考虑的)。
标签: c++ c dot-operator