Effectivement si les données sont organisées selon un layout arrays-of-structures plutôt que structure-of-arrays, l'auto-vectorisation ne fonctionne pas actuellement (dans gcc au moins). À quand des compilateurs qui modifient automatiquement le layout mémoire ?
Jamais avec C ou C++, car le standard l'interdit (quoi que avec C11 ou C99 il y a moyen de déclarer un champ de type char field[]; qui pourra être précisé plus tard si je me souviens bien).
En règle générale, tu peux passer par un outil de transformation de code qui fera du source-to-source, mais un compilateur qui obéit à la norme du C ou du C++ ne pourra sans doute jamais optimiser la disposition des champs dans une structure car cela irait contre la norme (et surtout ce ne serait pas portable—par exemple si tu as 2 machines différentes qui communiquent via le réseau, et qui doivent s'envoyer des bouts de tableau/structure).
[^] # Re: Ces architectures sont de plus en plus rares mais pas encore mortes
Posté par lasher . En réponse au journal Le Power8 d'IBM pourra t-il s'imposer dans le monde des entreprises ?. Évalué à 3.
J'oubliais :
Jamais avec C ou C++, car le standard l'interdit (quoi que avec C11 ou C99 il y a moyen de déclarer un champ de type
char field[];qui pourra être précisé plus tard si je me souviens bien).En règle générale, tu peux passer par un outil de transformation de code qui fera du source-to-source, mais un compilateur qui obéit à la norme du C ou du C++ ne pourra sans doute jamais optimiser la disposition des champs dans une structure car cela irait contre la norme (et surtout ce ne serait pas portable—par exemple si tu as 2 machines différentes qui communiquent via le réseau, et qui doivent s'envoyer des bouts de tableau/structure).