如果我给一个变量赋一个值,这个值与该变量已经持有的值相同,会发生写操作吗?



似乎找不到这个问题的答案。很难用语言表达,下面的代码可以更简洁地解释这个想法:

x = 5;
// reassigning the same value to the variable - will another write happen?
x = 5

我的直觉告诉我,这可能因语言而异-我主要关注PHP。

谢谢!

分配总是被重新分配的。检查变量的当前值需要读取该值,这是另一条指令。所以平均来说,你最终会得到更多的指令。

考虑:

  1. write - check(相同)- skip = 2指令
  2. 写-检查(不同)-写= 3个指令
  3. write - write = 2条指令

检查需要阅读。阅读是一种记忆途径。写是一种内存访问。从内存中读取数据和向内存中写入数据的量级相同。

还有,"完全相同"又是什么呢?的意思吗?对于数字来说,这可能是显而易见的,但对于物体来说,就不那么明显了。要递归地检查对象的每个属性和嵌套对象,还是只比较顶层引用?

NB。我在这里假设有代码在两个赋值之间执行,它们不是一个接一个地直接发生。编译器/解释器可能会捕获并统一这些错误,并且您的IDE肯定会标记它。

TLDR:即使它有所不同,也不要担心这种微优化,它们很少值得!

相关内容

  • 没有找到相关文章

最新更新