Need to normalize vectors?

When I pass vectors into methods such as Vector3.Angle() or Transform.RotateAround(), do I need to normalize them first or do those routines normalize them internally?

I'd like to avoid normalizing if I don't have to, since it's a (relatively) expensive operation and there's no point in doing it twice.

The correct answer is: no, you don't need to normalize your vectors. Both mentioned functions will internally normalize vectors, so doing it yourself will just double the effort.

No I don't think you need to normalize them but I think you should. If a function will perform an operation requiring normalized data, then you should be passing it normalized data regardless of whether that function has be set up to accept non-normalized data and normalize it internally.

The overhead of normalizing data will be incurred inside the function if you don't do it beforehand, so there is no win there. The cost of determining if a vector is normalized is quite small: (x*x + y*y + z*z) == 1.0 and that will be executed either way so it's a zero sum game performance wise. The reason you should do this is it makes your code correct, it will prepare you for the future when you may use a library which expects normalized data. Most importantly if you encounter a function which does require normalized data, you wont give yourself and your team a headache trying to track down obscure bugs.