What is faster: vec.emplace_back(x) or vec[x] ?

What is faster: vec.emplace_back(x) or vec[x] ?

When we need to fill std::vector with values and the size of vector is known in advance, there are two possibilities: using emplace_back() or using operator[]. For the emplace_back() we should reserve the necessary amount of space with reserve() before emplacing into vector. This will avoid unnecessary vector regrow and benefit performance. Alternatively, if we…

Vectorization, dependencies and outer loop vectorization: if you can’t beat them, join them

Vectorization, dependencies and outer loop vectorization: if you can’t beat them, join them

As I already mentioned in earlier posts, vectorization is the holy grail of software optimizations: if your hot loop is efficiently vectorized, it is pretty much running at fastest possible speed. So, it is definitely a goal worth pursuing, under two assumptions: (1) that your code has a hardware-friendly memory access pattern1 and (2) that…