summary refs log tree commit diff
path: root/lib/options.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2015-07-23 16:32:52 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2015-07-23 16:49:13 +0200
commitf14dab05d635711daef90639f84ef3170abb216c (patch)
treeef8379c724272138ddd8ff0a68a1bc0f3d20fce6 /lib/options.nix
parent3cd5fd8bb3fc4b824e89cb800716989a332f20f1 (diff)
downloadnixpkgs-f14dab05d635711daef90639f84ef3170abb216c.tar
nixpkgs-f14dab05d635711daef90639f84ef3170abb216c.tar.gz
nixpkgs-f14dab05d635711daef90639f84ef3170abb216c.tar.bz2
nixpkgs-f14dab05d635711daef90639f84ef3170abb216c.tar.lz
nixpkgs-f14dab05d635711daef90639f84ef3170abb216c.tar.xz
nixpkgs-f14dab05d635711daef90639f84ef3170abb216c.tar.zst
nixpkgs-f14dab05d635711daef90639f84ef3170abb216c.zip
optionAttrSetToDocList: O(n^2) -> O(n)
This shaves about 10% off memory consumption of NixOS evaluation.
Diffstat (limited to 'lib/options.nix')
-rw-r--r--lib/options.nix5
1 files changed, 2 insertions, 3 deletions
diff --git a/lib/options.nix b/lib/options.nix
index bfc5b5fa2ae..bb72ad6d125 100644
--- a/lib/options.nix
+++ b/lib/options.nix
@@ -83,7 +83,7 @@ rec {
   optionAttrSetToDocList = optionAttrSetToDocList' [];
 
   optionAttrSetToDocList' = prefix: options:
-    fold (opt: rest:
+    concatMap (opt:
       let
         docOption = rec {
           name = showOption opt.loc;
@@ -101,8 +101,7 @@ rec {
           let ss = opt.type.getSubOptions opt.loc;
           in if ss != {} then optionAttrSetToDocList' opt.loc ss else [];
       in
-        # FIXME: expensive, O(n^2)
-        [ docOption ] ++ subOptions ++ rest) [] (collect isOption options);
+        [ docOption ] ++ subOptions) (collect isOption options);
 
 
   /* This function recursively removes all derivation attributes from