Je suis pas tout a fait d'accord sur les chiffres.
Si tu fais apelle 50 fois a la fonction (pour 50 supression si je comprend bien) tu va creer 50 fichier temporaire de 100 Mo que tu renomeras 50 fois du meme nom a la fin donc ta conso disque est de 100Mo*2.(Ton fichier source et ton fichier temp qui remplace ton fichier source a la fin).
Le buffer variable en RAM peut etre reduit , par exemple rien ne t'empeche d'allouer 1Mo en RAM et de lire ton fichier par segment de 1Mo, dans ce cas une boucle while(EOF) fonctionnera tres bien.
En fait le plus efficace dans ce cas la est de prendre un buffer de la taille d'un inode, si ma memoire ne me joue pas de tour en ext2/3 ca doit faire 4Ko, prendre un petit buffer de 4Ko augmente la probabilité de ca presence en memoire physique et evite d'avoir du swap memoire sur le disk qui ralentit les I/O( pour moi un petit buffer mais judicieusement choisi ne degrade pas les performances).
Mias dans le contexte cité pour moi le seul moyen efficace c'est le hack immonde que tu cite.
Tu memoire dans ta fonction la liste des modifs dans un fichier (tes 50 appels) et ailleurs dans ton programme tu apelle une fonction qui les fait toutes d'un coup.
[^] # Re: AMHA
Posté par TheBreton . En réponse au message Supprimer le contenu d'un fichier. Évalué à 2.
Si tu fais apelle 50 fois a la fonction (pour 50 supression si je comprend bien) tu va creer 50 fichier temporaire de 100 Mo que tu renomeras 50 fois du meme nom a la fin donc ta conso disque est de 100Mo*2.(Ton fichier source et ton fichier temp qui remplace ton fichier source a la fin).
Le buffer variable en RAM peut etre reduit , par exemple rien ne t'empeche d'allouer 1Mo en RAM et de lire ton fichier par segment de 1Mo, dans ce cas une boucle while(EOF) fonctionnera tres bien.
En fait le plus efficace dans ce cas la est de prendre un buffer de la taille d'un inode, si ma memoire ne me joue pas de tour en ext2/3 ca doit faire 4Ko, prendre un petit buffer de 4Ko augmente la probabilité de ca presence en memoire physique et evite d'avoir du swap memoire sur le disk qui ralentit les I/O( pour moi un petit buffer mais judicieusement choisi ne degrade pas les performances).
Mias dans le contexte cité pour moi le seul moyen efficace c'est le hack immonde que tu cite.
Tu memoire dans ta fonction la liste des modifs dans un fichier (tes 50 appels) et ailleurs dans ton programme tu apelle une fonction qui les fait toutes d'un coup.