Хорошо, поэтому я попытался следовать советам и профилировать свой код с помощью указателей и значений. Я также посмотрел на код сборки. Похоже, что характеристики производительности на x86 сильно отличаются от PPC. На PPC двоичный интерфейс к C указывал, что аргументы будут помещаться в регистры (их было так много для выбора), однако, похоже, что даже на 64-битной x86 требуется, чтобы аргументы помещались в стек.
Так что это объясняет, почему на x86 передача по указателю всегда кажется быстрее. Однако я заметил, что компилятор очень хочет встроить. Так что не важно, каким образом я это сделал. Поэтому я думаю, что вывод заключается в том, чтобы использовать любой способ, который вам удобен.
Я думаю, что предпочтение передается по значению, потому что работать с копиями значений несколько безопаснее. Мой тестовый пример представлял собой структуру, состоящую из 4 двойных (поэтому я думаю, что на большинстве платформ она составляет 32 байта)