pour le
./2> tu veux dire comment faire pour que ton compilateur vectorise bien ton code?
(c'est les instructions SIMD sous intel, du style SSE(2/3) pour les floats/doubles, et MMX pour les entiers...)
bon sur PPC je sais pas mais.. en tout cas avec le SSE, si tu peux faire tes operations 4 par 4, ca sera tres probablement beaucoup mieux...
c'est des instructions qui operent sur des registres qui peuvent contenir, par exemple, 4 floats a la fois, du coup un add de 2 registres xmm-qqch t'additionnera 8 floats... donc la si tu fais tes operations 3 par 3... je sais pas trop comment le compilateur va l'optimiser, mais il y a des chances que ca soit pas top...
par contre, si tu arranges tes donnees comme ca:
truc[0].x = src[0].x;
truc[0].y = src[0].y;
truc[0].z = src[0].z;
truc[0].w = src[1].x;
truc[1].x = src[1].y;
truc[1].y = src[1].z;
truc[1].z = src[2].x;
truc[1].w = src[2].y;
truc[2].x = src[2].z;
truc[2].y = src[3].x;
truc[2].z = src[3].y;
truc[2].w = src[3].z;
et qu'apres tu fais des ops entre les blocs 'truc' de 4 floats, plutot qu'entre les blocs 'src' de 3 floats, je pense que t'aura deja plus de chances que le compilateur l'organise bien...
bref, essaye de decouper les operations et de regrouper les donnees par batch de 4...
enfin perso j'ai pas vraiment fait de tests particuliers sur comment ecrire du code C ou C++ pour que le compilateur genere un code bien vectorise... generalement quand c'est critique je fais une version SSE et une version normale, avec switch a l'init en fonction des caps du CPU...
la comme ca c'est tout ce que je peux te dire, dsl :/ (mais si tu fais des tests, /me curieux de voir ce que ca donne

(t'utilises quoi comme compilateur?))