faster?

Hi All.

In my C++ code I'm using the libc++ library and my question is about which construct is faster:

for(auto line : lines)
{
  ...
}

or

for(auto it = lines.begin(); it != lines.end(); it++)
{
  …
}

Thanks in advance for any answer.

Luca.

I agree with Alex Zavatone, just run a bench yourself and you will be fixed.
You will get the answer faster than waiting that someone does it for you.

-- Jean-Daniel

Hi Luca,

Don't use 'auto' in LLVM code for now. We still support building via some host compilers that don't support it.

-Jim

Ok, thanks.

Luca.

I don't think he's asking about code in the compiler itself. In any case, the foreach loop doesn't evaluate "end()" every iteration of the loop. Depending in what the container is, that could be worse.

My advice is to use the foreach loop and file a bug if you find a case that is ever slower.

-Chris

Ok, thanks Chris.
Yes, my code not involve the compiler itself.
Anyway the Jim advice is useful.

Thanks again.

Luca.

Ah, OK. Sorry, I misunderstood the context. Chris covered the other aspect of the question perfectly, so I have nothing to add there.

Cheers!

  Jim