Which algorithms are more efficient for orthonormalizing vectors?
For large collections of vectors (e.g., the columns of a large matrix), a better strategy (usually) is to use so-called Householder transformations. You can read about the pros and cons of the two methods on Wikipedia. More generally, there is quite robust numerical software to compute the so-called QR decomposition of a matrix, such as SuiteSparse.
For small collections of vectors, like just a pair of vectors in the plane, all this stuff is overkill and you can typically just use Gram-Schmidt. But for a large basis (e.g., a basis of functions, which comes up all the time in graphics) you'll want to do something smarter.