Когда вы делаете это:
XMVector3Rotate(rays[i], orientation);
Я догадываюсь , что компилятор включает функцию - и видит это, потому что его результат никогда нигде не назначается - он на самом деле ничего не делает и удаляет вызов функции полностью. Это очень быстро, потому что на самом деле ничего не делает.
Но потом, когда вы добавите в задание:
calculatedRays[i] = XMVector3Rotate(rays[i], orientation);
Внезапно вы выполняете кучу операций чтения и записи в память и выполняете различные математические операции - все из которых ранее пропускались.
(Вы пометили этот XNA - но это функция C ++. Большинство компиляторов C ++ могут и будут выполнять встроенные функции, подобные этой. Стандартный компилятор C # не может.)