Je ne sais pas pourquoi là tu parle de cascade d'opérations et en dessous tu parle d'un seul.
Je crois que cela fonctionne à base de comptage de référence. En gros, tu as un arbre qui représente ton filesystem à un instant T, et un autre arbre à un instant T', qui partage le plus possible avec le premier arbre. Chaque sous arbre partagé ayant un compteur de référence supérieur à 1.
Bref, supprimer une référence, c'est faire -1 sur le compteur. Si celui-ci est à 0, alors on "supprime" et cette opération peut être récursive et donc prendre du temps.
Tu remplace la suppression par des créations de liens ce qui a le même coût.
Oui, mais dans un cas tu supprimes + crée, alors que dans l'autre cas tu crée seulement (et tu supprimera plus tard).
Je pense que les coûts sont assez similaires. J'ai envie de Benchmark cela.
[^] # Re: à chacun sa vision de la simplicité
Posté par Guillaum (site web personnel) . En réponse au journal Les rollbacks avec NixOS, ou comment casser son système. Évalué à 2. Dernière modification le 27 novembre 2020 à 22:19.
Je crois que cela fonctionne à base de comptage de référence. En gros, tu as un arbre qui représente ton filesystem à un instant T, et un autre arbre à un instant T', qui partage le plus possible avec le premier arbre. Chaque sous arbre partagé ayant un compteur de référence supérieur à 1.
Bref, supprimer une référence, c'est faire -1 sur le compteur. Si celui-ci est à 0, alors on "supprime" et cette opération peut être récursive et donc prendre du temps.
Oui, mais dans un cas tu supprimes + crée, alors que dans l'autre cas tu crée seulement (et tu supprimera plus tard).
Je pense que les coûts sont assez similaires. J'ai envie de Benchmark cela.