I think option 1 looks neater, and I don't think there is any benefit with option 2.
However, if you need to know which gives you best performance, you really need to run the code in a way that can measure performance. Me, or anyone else, looking at the code and saying "A looks better than B" is no good - compilers aren't 100% predictable, and sometimes the choice that "Looks good" isn't the best choice. This is something I say about ALL performance posts, and there is a good reason for that. I have personally experienced it where you look at two pieces of code, saying "Well, they are going to take the same time, they are almost identical", but because there is some subtle difference, the performance is noticeably better in case A than in case B (or the other way around).
Make sure you don't just test the trivial case here, you need a few different variations, such as a struct with a fair number of members, large and small array, as well as the simple int
, long long
, double
, etc.