lix/src
Eelco Dolstra 81e7c40264 Optimize primop calls
We now parse function applications as a vector of arguments rather
than as a chain of binary applications, e.g. 'substring 1 2 "foo"' is
parsed as

  ExprCall { .fun = <substring>, .args = [ <1>, <2>, <"foo"> ] }

rather than

  ExprApp (ExprApp (ExprApp <substring> <1>) <2>) <"foo">

This allows primops to be called immediately (if enough arguments are
supplied) without having to allocate intermediate tPrimOpApp values.

On

  $ nix-instantiate --dry-run '<nixpkgs/nixos/release-combined.nix>' -A nixos.tests.simple.x86_64-linux

this gives a substantial performance improvement:

  user CPU time:      median =      0.9209  mean =      0.9218  stddev =      0.0073  min =      0.9086  max =      0.9340  [rejected, p=0.00000, Δ=-0.21433±0.00677]
  elapsed time:       median =      1.0585  mean =      1.0584  stddev =      0.0024  min =      1.0523  max =      1.0623  [rejected, p=0.00000, Δ=-0.20594±0.00236]

because it reduces the number of tPrimOpApp allocations from 551990 to
42534 (i.e. only small minority of primop calls are partially
applied) which in turn reduces time spent in the garbage collector.
2021-11-04 15:03:40 +01:00
..
build-remote build-remote: Implicitly add the 'builtin' system type to all machines 2021-10-27 14:25:13 +02:00
cpptoml Revert the enum struct change 2020-06-18 22:11:26 +00:00
libcmd Make experimental-features a proper type 2021-10-26 07:02:31 +02:00
libexpr Optimize primop calls 2021-11-04 15:03:40 +01:00
libfetchers Explicitly set initial branch name for git 2021-09-24 22:09:49 +08:00
libmain Merge pull request #5224 from baloo/baloo/5089/force-nss_dns-load 2021-09-09 10:37:41 +02:00
libstore libstore: Use unix-dotfile vfs if useSQLiteWAL is false 2021-11-03 14:19:11 +02:00
libutil Merge branch 'master' of https://github.com/alekswn/nix 2021-10-29 14:42:26 +02:00
nix StaticEnv: Use std::vector instead of std::map 2021-11-04 15:03:34 +01:00
nix-build Make experimental-features a proper type 2021-10-26 07:02:31 +02:00
nix-channel Initialize plugins after handling initial command line flags 2021-02-24 08:22:17 -05:00
nix-collect-garbage Initialize plugins after handling initial command line flags 2021-02-24 08:22:17 -05:00
nix-copy-closure copyPaths: Pass store by reference 2021-07-22 09:59:51 +02:00
nix-env Fix quotes 2021-09-14 19:48:16 +02:00
nix-instantiate nix-instantiate: Fix --eval-store 2021-07-27 11:16:47 +02:00
nix-store nix-store --serve: pass on settings.keepFailed from SSH store 2021-08-31 13:11:46 +02:00
nlohmann nlohmann_json: Update to 3.9.1, fix use of internal copy 2021-07-15 12:25:53 +02:00
resolve-system-dependencies Apply OS checks to host platform, not build 2021-06-23 15:00:36 +00:00