forked from lix-project/lix
* Performance improvement: don't register already registered terms,
thus greatly reducing the number of db transactions.
This commit is contained in:
parent
08b7319f5b
commit
1eb4da156c
13
src/expr.cc
13
src/expr.cc
|
@ -37,12 +37,15 @@ Path writeTerm(ATerm t, const string & suffix)
|
|||
|
||||
Path path = canonPath(nixStore + "/" +
|
||||
(string) h + suffix + ".nix");
|
||||
if (!ATwriteToNamedTextFile(t, path.c_str()))
|
||||
throw Error(format("cannot write aterm %1%") % path);
|
||||
|
||||
Transaction txn(nixDB);
|
||||
registerValidPath(txn, path);
|
||||
txn.commit();
|
||||
if (!isValidPath(path)) {
|
||||
if (!ATwriteToNamedTextFile(t, path.c_str()))
|
||||
throw Error(format("cannot write aterm %1%") % path);
|
||||
|
||||
Transaction txn(nixDB);
|
||||
registerValidPath(txn, path);
|
||||
txn.commit();
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue