想要弄清楚与性能和编译有关的事情。
如果有人使用多次调用v.back()
而不是像T = v.back()
那样做,编译器会优化代码吗?为什么?
从理论上讲,有人可以实现随机的back()
方法。
back的实现有什么特别的东西可以让它更快吗?
答案 0 :(得分:3)
如果编译器无法查看其实现,则不会缓存v.back()
的结果。但是,假设它内联,编译器可以看到v
的哪些成员对v.back()
的返回值有贡献。这可能很简单,就像begin+size-1
一样。如果这两者都没有改变,编译器就会意识到他们可以对该表达式进行标准的Common Subexpression Elimination。