Skip to content

Are INLINE pragmas worth the compilation time? #424

@phadej

Description

@phadej

Without (after removal of pragmas)

INLINE pragmas in FromJSON.hs and ToJSON.hs

Second line ais nother clean build with aeson, criterion, statistics and aeson-benchmarks:
It seems that INLINE pragmas slowdown the downstream package compilation as well?

stack build aeson  69.23s user 2.65s system 99% cpu 1:12.35 total
stack build       313.90s user 12.86s system 100% cpu 5:26.45 total
benchmarking generic/direct/twitter100
time                 405.4 μs   (402.9 μs .. 407.9 μs)
                     1.000 R²   (0.999 R² .. 1.000 R²)
mean                 405.0 μs   (402.6 μs .. 407.8 μs)
std dev              8.039 μs   (6.568 μs .. 10.82 μs)
variance introduced by outliers: 12% (moderately inflated)

benchmarking manual/direct/twitter100
time                 387.0 μs   (383.2 μs .. 391.5 μs)
                     0.999 R²   (0.999 R² .. 1.000 R²)
mean                 385.2 μs   (383.0 μs .. 387.6 μs)
std dev              8.185 μs   (7.162 μs .. 9.457 μs)
variance introduced by outliers: 14% (moderately inflated)

benchmarking th/direct/twitter100
time                 406.7 μs   (402.7 μs .. 409.9 μs)
                     0.999 R²   (0.999 R² .. 1.000 R²)
mean                 404.4 μs   (401.7 μs .. 407.7 μs)
std dev              9.895 μs   (8.084 μs .. 12.91 μs)
variance introduced by outliers: 16% (moderately inflated)

With:

stack build aeson  179.39s user 4.51s system 97% cpu 3:09.30 total
stack build        567.26s user 16.09s system 100% cpu 9:41.51 total
benchmarking generic/direct/twitter100
time                 399.7 μs   (395.2 μs .. 405.4 μs)
                     0.999 R²   (0.999 R² .. 1.000 R²)
mean                 400.3 μs   (397.5 μs .. 403.5 μs)
std dev              9.911 μs   (7.580 μs .. 12.47 μs)
variance introduced by outliers: 17% (moderately inflated)

benchmarking manual/direct/twitter100
time                 385.4 μs   (383.1 μs .. 387.9 μs)
                     1.000 R²   (0.999 R² .. 1.000 R²)
mean                 386.9 μs   (384.4 μs .. 390.0 μs)
std dev              9.782 μs   (7.519 μs .. 15.14 μs)
variance introduced by outliers: 18% (moderately inflated)

benchmarking th/direct/twitter100
time                 404.5 μs   (400.5 μs .. 407.8 μs)
                     0.999 R²   (0.999 R² .. 1.000 R²)
mean                 402.1 μs   (399.1 μs .. 406.3 μs)
std dev              12.35 μs   (9.032 μs .. 18.06 μs)
variance introduced by outliers: 24% (moderately inflated)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions