调用vector的back()方法与存储值与调用返回不可预测值的方法相比有多贵?

时间:2016-03-30 07:03:20

标签: c++ performance compiler-optimization

想要弄清楚与性能和编译有关的事情。 如果有人使用多次调用v.back()而不是像T = v.back()那样做,编译器会优化代码吗?为什么? 从理论上讲,有人可以实现随机的back()方法。 back的实现有什么特别的东西可以让它更快吗?

1 个答案:

答案 0 :(得分:3)

如果编译器无法查看其实现,则不会缓存v.back()的结果。但是,假设它内联,编译器可以看到v的哪些成员对v.back()的返回值有贡献。这可能很简单,就像begin+size-1一样。如果这两者都没有改变,编译器就会意识到他们可以对该表达式进行标准的Common Subexpression Elimination。