Skip to content

Performance #8

@ocharles

Description

@ocharles

The gcc branch gives us ./example/gcc.dhall, which is used to build GCC. This has 3 dependencies - GMP, MPFR and MPC. However, just evaluating gcc.dhall takes minutes:

time ./bin/dhall +RTS -s <<< ./examples/gcc.dhall

285,234,734,472 bytes allocated in the heap
   2,149,148,384 bytes copied during GC
       8,560,952 bytes maximum residency (89 sample(s))
         341,888 bytes maximum slop
              26 MB total memory in use (0 MB lost due to fragmentation)

                                     Tot time (elapsed)  Avg pause  Max pause
  Gen  0     274811 colls,     0 par    4.488s   4.463s     0.0000s    0.0004s
  Gen  1        89 colls,     0 par    0.559s   0.559s     0.0063s    0.0123s

  INIT    time    0.000s  (  0.000s elapsed)
  MUT     time   92.299s  ( 92.484s elapsed)
  GC      time    5.047s  (  5.022s elapsed)
  EXIT    time    0.000s  (  0.000s elapsed)
  Total   time   97.346s  ( 97.507s elapsed)

  %GC     time       5.2%  (5.2% elapsed)

  Alloc rate    3,090,343,422 bytes per MUT second

  Productivity  94.8% of total user, 94.8% of total elapsed

./bin/dhall +RTS -s <<< ./examples/gcc.dhall  96.82s user 0.54s system 99% cpu 1:37.51 total

Applying dhall freeze everywhere actually makes things worse:

find ./examples -name '*.dhall' -exec ./bin/dhall freeze --inplace '{}' ';'
time ./bin/dhall +RTS -s <<< ./examples/gcc.dhall

343,492,628,992 bytes allocated in the heap
   2,511,808,920 bytes copied during GC
       9,187,192 bytes maximum residency (94 sample(s))
          46,576 bytes maximum slop
              28 MB total memory in use (0 MB lost due to fragmentation)

                                     Tot time (elapsed)  Avg pause  Max pause
  Gen  0     330961 colls,     0 par    5.495s   5.461s     0.0000s    0.0008s
  Gen  1        94 colls,     0 par    0.520s   0.521s     0.0055s    0.0137s

  INIT    time    0.000s  (  0.000s elapsed)
  MUT     time  113.356s  (113.629s elapsed)
  GC      time    6.015s  (  5.982s elapsed)
  EXIT    time    0.000s  (  0.000s elapsed)
  Total   time  119.372s  (119.611s elapsed)

  %GC     time       5.0%  (5.0% elapsed)

  Alloc rate    3,030,198,903 bytes per MUT second

  Productivity  95.0% of total user, 95.0% of total elapsed

./bin/dhall +RTS -s <<< ./examples/gcc.dhall  118.75s user 0.63s system 99% cpu 1:59.62 total

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions