11Fermer13
PolluxLe 16/09/2006 à 22:29
mais.. oui, decouper la lecture de la structure en plusieurs freads chacun un peu plus petit que la taille du cache ca doit etre bon...

ben, oui, ou même nettement inférieurs à la taille du cache, du moment que ça suffit à rendre l'overhead de l'appel à fread() négligeable smile (sachant qu'il y a un facteur 60 entre la lecture d'un fichier à coup de fgetc() et à coup de fread() qui tiennent dans le cache, un buffer d'un peu plus de 256 octets devrait suffire à masquer l'overhead)
sBibi :
et le coup du swap des champs (sauf si c'est une structure de 10000 chars et 1 int32 triso), est sans doute plus eleve que celui d'un trash de cache

euh, c'est tellement coûteux de thrasher le cache que je vois pas vraiment comment on pourrait se débrouiller pour avoir un swap encore plus coûteux que ça confus
~/desktop $ gcc -std=c99 -Dop=not -O2 x.c -o x && time ./x
./x 0.37s user 0.23s system 73% cpu 0.828 total
~/desktop $ gcc -std=c99 -Dop=swap -O2 x.c -o x && time ./x
./x 0.33s user 0.28s system 68% cpu 0.886 total
(et swap() est tout sauf optimisée)