不少人都说++i比i++性能高,因为i++会再分配一个临时变量存储i的旧值。
因此我一直以为++i是不需要寄存器的原子操作,直到看到一篇大神的文章:
多线程程序中操作的原子性
http://www.parallellabs.com/2010/04/15/atomic-operation-in-multithreaded-application/
上面贴的汇编代码,这++i与i++不都一样吗?顺带去找一下两个语句对应的汇编语句,如下:
结论:++i与i++都不是原子操作,两者的性能应该是一样的。
当然对于iterator来说,++iter无疑在性能上是优于iter++了。