Skip to content

flake: update inputs, fix build with GHC 9.10#884

Draft
elopez wants to merge 9 commits intomainfrom
ghc-910-flake
Draft

flake: update inputs, fix build with GHC 9.10#884
elopez wants to merge 9 commits intomainfrom
ghc-910-flake

Conversation

@elopez
Copy link
Collaborator

@elopez elopez commented Sep 24, 2025

Description

This is a WIP PR to prepare for when nixpkgs is ready to build hevm with GHC 9.10

We would need the following to land on nixpkgs-unstable or be resolved before we can make the switch:

Checklist

  • tested locally
  • added automated tests
  • updated the docs
  • updated the changelog

@elopez
Copy link
Collaborator Author

elopez commented Sep 24, 2025

Performance seems to be either unchanged or consistently (~ same % across sizes) worse in some cases. I wonder if FFI calls have a higher cost on the new version, my first intuition is that the slower tests are the ones that compute keccak hashes.

Benchmark
All
  loop
    2:     OK
      89.1 μs ± 7.9 μs,       same as baseline
    4:     OK
      131  μs ± 8.3 μs,       same as baseline
    8:     OK
      212  μs ± 7.1 μs,       same as baseline
    16:    OK
      376  μs ±  31 μs,       same as baseline
    32:    OK
      692  μs ±  58 μs,       same as baseline
    64:    OK
      1.37 ms ± 124 μs,       same as baseline
    128:   OK
      2.61 ms ± 215 μs,       same as baseline
    256:   OK
      5.21 ms ± 470 μs,       same as baseline
    512:   OK
      10.4 ms ± 932 μs,       same as baseline
    1024:  OK
      20.4 ms ± 1.8 ms,       same as baseline
    2048:  OK
      40.9 ms ± 4.0 ms,       same as baseline
    4096:  OK
      81.6 ms ± 7.5 ms,       same as baseline
    8192:  OK
      164  ms ±  11 ms,       same as baseline
    16384: OK
      325  ms ±  16 ms,       same as baseline
  primes
    2:     OK
      279  μs ±  23 μs,       same as baseline
    4:     OK
      429  μs ±  28 μs,  8% more than baseline
    8:     OK
      642  μs ±  61 μs,       same as baseline
    16:    OK
      1.23 ms ±  48 μs,       same as baseline
    32:    OK
      2.72 ms ± 135 μs,       same as baseline
    64:    OK
      5.90 ms ± 442 μs,       same as baseline
    128:   OK
      13.3 ms ± 916 μs,       same as baseline
    256:   OK
      31.4 ms ± 2.4 ms,       same as baseline
    512:   OK
      75.0 ms ± 4.1 ms,       same as baseline
    1024:  OK
      180  ms ±  18 ms,       same as baseline
    2048:  OK
      444  ms ±  19 ms,       same as baseline
    4096:  OK
      1.105 s ±  44 ms,       same as baseline
    8192:  OK
      2.769 s ± 176 ms,       same as baseline
    16384: OK
      7.014 s ± 333 ms,       same as baseline
  hashes
    2:     OK
      127  μs ± 4.1 μs, 19% more than baseline
    4:     OK
      205  μs ±  17 μs, 19% more than baseline
    8:     OK
      358  μs ±  35 μs, 23% more than baseline
    16:    OK
      666  μs ±  56 μs, 23% more than baseline
    32:    OK
      1.28 ms ± 126 μs, 21% more than baseline
    64:    OK
      2.56 ms ± 176 μs, 26% more than baseline
    128:   OK
      5.03 ms ± 235 μs, 24% more than baseline
    256:   OK
      10.1 ms ± 543 μs, 23% more than baseline
    512:   OK
      20.3 ms ± 1.9 ms, 23% more than baseline
    1024:  OK
      40.7 ms ± 2.1 ms, 25% more than baseline
    2048:  OK
      80.5 ms ± 7.7 ms, 24% more than baseline
    4096:  OK
      161  ms ± 8.7 ms, 23% more than baseline
    8192:  OK
      317  ms ±  23 ms, 23% more than baseline
    16384: OK
      637  ms ±  60 ms, 25% more than baseline
  hashmem
    2:     OK
      208  μs ±  14 μs, 17% more than baseline
    4:     OK
      327  μs ±  32 μs, 24% more than baseline
    8:     OK
      562  μs ±  55 μs, 22% more than baseline
    16:    OK
      1.04 ms ±  54 μs, 21% more than baseline
    32:    OK
      2.05 ms ± 172 μs, 31% more than baseline
    64:    OK
      4.03 ms ± 287 μs, 28% more than baseline
    128:   OK
      7.88 ms ± 506 μs, 25% more than baseline
    256:   OK
      16.1 ms ± 1.2 ms, 25% more than baseline
    512:   OK
      32.2 ms ± 2.6 ms, 26% more than baseline
    1024:  OK
      64.5 ms ± 5.3 ms, 28% more than baseline
    2048:  OK
      128  ms ±  13 ms, 25% more than baseline
    4096:  OK
      257  ms ±  15 ms, 28% more than baseline
    8192:  OK
      512  ms ±  37 ms, 26% more than baseline
    16384: OK
      1.025 s ±  60 ms, 27% more than baseline
  balanceTransfer
    2:     OK
      5.18 ms ± 433 μs,       same as baseline
    4:     OK
      5.49 ms ± 248 μs, 11% more than baseline
    8:     OK
      5.44 ms ± 498 μs,       same as baseline
    16:    OK
      5.57 ms ± 552 μs,       same as baseline
    32:    OK
      5.86 ms ± 481 μs,       same as baseline
    64:    OK
      6.45 ms ± 508 μs,       same as baseline
    128:   OK
      8.18 ms ± 515 μs,  8% more than baseline
    256:   OK
      11.3 ms ± 1.0 ms,       same as baseline
    512:   OK
      18.6 ms ± 852 μs,       same as baseline
    1024:  OK
      31.8 ms ± 2.1 ms,       same as baseline
    2048:  OK
      56.1 ms ± 3.9 ms,       same as baseline
    4096:  OK
      109  ms ± 9.2 ms,       same as baseline
    8192:  OK
      218  ms ±  21 ms,       same as baseline
    16384: OK
      429  ms ±  38 ms,       same as baseline
  funcCall
    2:     OK
      151  μs ± 9.0 μs,       same as baseline
    4:     OK
      208  μs ±  11 μs,       same as baseline
    8:     OK
      332  μs ±  23 μs,       same as baseline
    16:    OK
      564  μs ±  23 μs,       same as baseline
    32:    OK
      1.06 ms ±  98 μs,       same as baseline
    64:    OK
      1.97 ms ± 146 μs,       same as baseline
    128:   OK
      3.82 ms ± 224 μs,       same as baseline
    256:   OK
      7.42 ms ± 640 μs,       same as baseline
    512:   OK
      14.7 ms ± 868 μs,       same as baseline
    1024:  OK
      29.3 ms ± 1.8 ms,       same as baseline
    2048:  OK
      57.7 ms ± 4.0 ms,       same as baseline
    4096:  OK
      116  ms ±  10 ms,       same as baseline
    8192:  OK
      235  ms ±  19 ms,       same as baseline
    16384: OK
      464  ms ±  37 ms,       same as baseline
  contractCreation
    2:     OK
      245  μs ±  18 μs, 16% more than baseline
    4:     OK
      397  μs ±  16 μs, 16% more than baseline
    8:     OK
      720  μs ±  68 μs, 18% more than baseline
    16:    OK
      1.38 ms ±  82 μs, 29% more than baseline
    32:    OK
      2.73 ms ± 125 μs, 52% more than baseline
    64:    OK
      6.25 ms ± 276 μs, 28% more than baseline
    128:   OK
      13.8 ms ± 974 μs, 22% more than baseline
    256:   OK
      30.5 ms ± 1.9 ms, 14% more than baseline
    512:   OK
      66.8 ms ± 2.4 ms, 16% more than baseline
    1024:  OK
      140  ms ±  10 ms, 13% more than baseline
    2048:  OK
      292  ms ±  12 ms, 15% more than baseline
    4096:  OK
      644  ms ±  40 ms, 19% more than baseline
    8192:  OK
      1.310 s ±  69 ms, 20% more than baseline
    16384: OK
      2.579 s ±  63 ms,       same as baseline
  contractCreationMem
    2:     OK
      1.06 ms ±  69 μs, 23% more than baseline
    4:     OK
      1.93 ms ± 140 μs, 26% more than baseline
    8:     OK
      4.14 ms ± 298 μs, 34% more than baseline
    16:    OK
      9.04 ms ± 490 μs, 25% more than baseline
    32:    OK
      19.0 ms ± 977 μs, 22% more than baseline
    64:    OK
      38.0 ms ± 1.8 ms, 20% more than baseline
    128:   OK
      77.3 ms ± 6.2 ms, 18% more than baseline
    256:   OK
      157  ms ± 7.0 ms, 19% more than baseline
    512:   OK
      322  ms ±  11 ms, 19% more than baseline
    1024:  OK
      669  ms ±  65 ms, 21% more than baseline
    2048:  OK
      1.277 s ±  77 ms, 15% more than baseline
    4096:  OK
      2.681 s ± 256 ms, 20% more than baseline
    8192:  OK
      5.426 s ± 348 ms, 21% more than baseline
    16384: OK
      10.282 s ± 106 ms, 14% more than baseline
  arrayCreationMem
    2:     OK
      517  μs ±  44 μs, 31% more than baseline
    4:     OK
      1.52 ms ±  99 μs, 56% more than baseline
    8:     OK
      5.39 ms ± 439 μs, 62% more than baseline
    16:    OK
      19.7 ms ± 1.3 ms, 64% more than baseline
    32:    OK
      78.2 ms ± 7.3 ms, 67% more than baseline
    64:    OK
      305  ms ±  16 ms, 66% more than baseline
    128:   OK
      1.222 s ±  43 ms, 70% more than baseline
    256:   OK
      4.863 s ±  88 ms, 69% more than baseline
    512:   OK
      19.337 s ±  36 ms, 69% more than baseline
  mapStorage
    2:     OK
      217  μs ± 8.0 μs, 23% more than baseline
    4:     OK
      369  μs ±  25 μs, 26% more than baseline
    8:     OK
      665  μs ±  54 μs, 27% more than baseline
    16:    OK
      1.29 ms ± 112 μs, 35% more than baseline
    32:    OK
      2.52 ms ± 164 μs, 29% more than baseline
    64:    OK
      5.09 ms ± 431 μs, 32% more than baseline
    128:   OK
      10.2 ms ± 830 μs, 31% more than baseline
    256:   OK
      19.9 ms ± 1.3 ms, 22% more than baseline
    512:   OK
      41.3 ms ± 3.5 ms, 28% more than baseline
    1024:  OK
      83.4 ms ± 5.9 ms, 31% more than baseline
    2048:  OK
      166  ms ±  16 ms, 32% more than baseline
    4096:  OK
      330  ms ±  17 ms, 29% more than baseline
    8192:  OK
      664  ms ±  40 ms, 28% more than baseline
    16384: OK
      1.321 s ±  32 ms, 29% more than baseline
  swapOperations
    2:     OK
      480  μs ±  21 μs,       same as baseline
    4:     OK
      527  μs ±  43 μs,       same as baseline
    8:     OK
      742  μs ±  27 μs,       same as baseline
    16:    OK
      1.05 ms ±  59 μs,       same as baseline
    32:    OK
      1.67 ms ± 123 μs,       same as baseline
    64:    OK
      2.96 ms ± 226 μs,       same as baseline
    128:   OK
      5.41 ms ± 467 μs,       same as baseline
    256:   OK
      10.1 ms ± 610 μs,       same as baseline
    512:   OK
      19.3 ms ± 1.2 ms,       same as baseline
    1024:  OK
      38.2 ms ± 2.4 ms,       same as baseline
    2048:  OK
      76.2 ms ± 4.0 ms,       same as baseline
    4096:  OK
      153  ms ± 7.3 ms,       same as baseline
    8192:  OK
      303  ms ±  16 ms,       same as baseline
    16384: OK
      605  ms ±  20 ms,       same as baseline

All 149 tests passed (438.09s)

@blishko
Copy link
Collaborator

blishko commented Sep 24, 2025

Performance seems to be either unchanged or consistently (~ same % across sizes) worse in some cases. I wonder if FFI calls have a higher cost on the new version, my first intuition is that the slower tests are the ones that compute keccak hashes.

This is quite unfortunate.
Should we try to identify the regression and see if GHC can do something about it?
Not sure we want to update under these circumstances.

@elopez
Copy link
Collaborator Author

elopez commented Sep 24, 2025

Yeah, I think it'd be good to try and figure out what the extra time is spent on.

@elopez elopez changed the title flake: update inputs, fix build with GHC 9.8 flake: update inputs, fix build with GHC 9.10 Sep 24, 2025
@gustavo-grieco
Copy link
Collaborator

I will be also in favor to wait until we have a clear picture on what is causing this regression.

@elopez elopez mentioned this pull request Dec 16, 2025
3 tasks
@msooseth
Copy link
Collaborator

@elopez wanna have another go at this? Maybe it's better now? I think there have been some changes since that may have improved the situation?

@elopez
Copy link
Collaborator Author

elopez commented Feb 23, 2026

It looks like aeson-optics has not been updated yet 😢

@elopez
Copy link
Collaborator Author

elopez commented Feb 23, 2026

Looks like we can get it to build on Windows anyway with an extra line on cabal.project :) If any of you can do the re-benchmarking that'd be cool, the branch should be up to date with main now and the latest nixpkgs-unstable

@elopez
Copy link
Collaborator Author

elopez commented Feb 24, 2026

Worth noting here -- static builds for linux (.#redistributable) will use GHC 9.12 NixOS/nixpkgs#488658

@elopez
Copy link
Collaborator Author

elopez commented Feb 24, 2026

And static builds seem to be broken 😅

@blishko
Copy link
Collaborator

blishko commented Feb 24, 2026

And static builds seem to be broken 😅

And static builds seem to be broken 😅

Ours? Or what do you mean?

@elopez
Copy link
Collaborator Author

elopez commented Feb 24, 2026

And static builds seem to be broken 😅

Ours? Or what do you mean?

I mean building .#redistributable with these changes uses GHC 9.12 and it ghc iserv seems to fail/crash when building one of the dependencies (at least when I tried on linux aarch64)

@blishko
Copy link
Collaborator

blishko commented Feb 24, 2026

Yes, the linux aarch64 architecture was a thing we wanted to add for static builds, but we might need to remove it again.
In any case, it would be good to have the same version of GHC used for regular and static builds.
Can we somehow bump GHC to 9.12 everywhere?

@blishko
Copy link
Collaborator

blishko commented Feb 25, 2026

Looks like we can get it to build on Windows anyway with an extra line on cabal.project :) If any of you can do the re-benchmarking that'd be cool, the branch should be up to date with main now and the latest nixpkgs-unstable

I am still seeing similar levels of regression as before:

Comparsion with `main` baseline
All
  loop
    2:     OK
      29.0 μs ± 1.9 μs,       same as baseline
    4:     OK
      42.3 μs ± 1.8 μs,       same as baseline
    8:     OK
      67.1 μs ± 4.3 μs,       same as baseline
    16:    OK
      121  μs ±  12 μs,       same as baseline
    32:    OK
      221  μs ±  13 μs,       same as baseline
    64:    OK
      431  μs ±  28 μs,       same as baseline
    128:   OK
      854  μs ±  27 μs,       same as baseline
    256:   OK
      1.73 ms ± 115 μs,       same as baseline
    512:   OK
      3.31 ms ± 243 μs,       same as baseline
    1024:  OK
      6.58 ms ± 455 μs,       same as baseline
    2048:  OK
      13.1 ms ± 946 μs,       same as baseline
    4096:  OK
      26.0 ms ± 1.0 ms,       same as baseline
    8192:  OK
      52.4 ms ± 3.6 ms,       same as baseline
    16384: OK
      104  ms ± 9.1 ms,       same as baseline
  primes
    2:     OK
      97.3 μs ± 5.4 μs,       same as baseline
    4:     OK
      142  μs ± 7.0 μs,       same as baseline
    8:     OK
      227  μs ±  14 μs,       same as baseline
    16:    OK
      437  μs ±  32 μs,       same as baseline
    32:    OK
      990  μs ±  98 μs,       same as baseline
    64:    OK
      2.09 ms ± 105 μs,       same as baseline
    128:   OK
      4.61 ms ± 296 μs,       same as baseline
    256:   OK
      10.6 ms ± 877 μs,       same as baseline
    512:   OK
      25.3 ms ± 2.0 ms,       same as baseline
    1024:  OK
      60.6 ms ± 3.7 ms,       same as baseline
    2048:  OK
      149  ms ± 8.1 ms,       same as baseline
    4096:  OK
      372  ms ±  17 ms,       same as baseline
    8192:  OK
      939  ms ±  87 ms,       same as baseline
    16384: OK
      2.349 s ±  63 ms,       same as baseline
  hashes
    2:     OK
      41.8 μs ± 3.9 μs, 12% more than baseline
    4:     OK
      67.8 μs ± 3.9 μs, 13% more than baseline
    8:     OK
      120  μs ± 8.7 μs, 14% more than baseline
    16:    OK
      220  μs ±  15 μs, 13% more than baseline
    32:    OK
      425  μs ±  30 μs, 16% more than baseline
    64:    OK
      844  μs ±  58 μs, 16% more than baseline
    128:   OK
      1.70 ms ± 115 μs, 15% more than baseline
    256:   OK
      3.46 ms ± 257 μs, 15% more than baseline
    512:   OK
      6.94 ms ± 562 μs, 14% more than baseline
    1024:  OK
      13.8 ms ± 937 μs, 13% more than baseline
    2048:  OK
      27.3 ms ± 1.7 ms, 14% more than baseline
    4096:  OK
      54.4 ms ± 4.3 ms, 14% more than baseline
    8192:  OK
      108  ms ± 8.1 ms, 15% more than baseline
    16384: OK
      213  ms ±  14 ms, 13% more than baseline
  hashmem
    2:     OK
      65.1 μs ± 4.5 μs,  9% more than baseline
    4:     OK
      106  μs ± 6.7 μs, 14% more than baseline
    8:     OK
      183  μs ±  15 μs, 15% more than baseline
    16:    OK
      340  μs ±  32 μs, 18% more than baseline
    32:    OK
      653  μs ±  58 μs, 18% more than baseline
    64:    OK
      1.38 ms ± 121 μs, 24% more than baseline
    128:   OK
      2.76 ms ± 221 μs, 19% more than baseline
    256:   OK
      5.53 ms ± 436 μs, 17% more than baseline
    512:   OK
      11.2 ms ± 1.1 ms, 17% more than baseline
    1024:  OK
      22.2 ms ± 1.7 ms, 13% more than baseline
    2048:  OK
      44.8 ms ± 3.6 ms, 16% more than baseline
    4096:  OK
      88.3 ms ± 7.2 ms, 15% more than baseline
    8192:  OK
      180  ms ± 8.6 ms, 15% more than baseline
    16384: OK
      361  ms ±  15 ms, 17% more than baseline
  balanceTransfer
    2:     OK
      3.76 ms ± 248 μs,       same as baseline
    4:     OK
      3.78 ms ± 233 μs,       same as baseline
    8:     OK
      3.83 ms ± 213 μs,       same as baseline
    16:    OK
      3.94 ms ± 268 μs,       same as baseline
    32:    OK
      4.09 ms ± 244 μs,       same as baseline
    64:    OK
      4.43 ms ± 291 μs,       same as baseline
    128:   OK
      5.20 ms ± 257 μs,       same as baseline
    256:   OK
      6.99 ms ± 437 μs,       same as baseline
    512:   OK
      10.6 ms ± 842 μs,       same as baseline
    1024:  OK
      17.1 ms ± 876 μs,       same as baseline
    2048:  OK
      28.8 ms ± 1.9 ms,       same as baseline
    4096:  OK
      52.1 ms ± 4.3 ms,       same as baseline
    8192:  OK
      98.1 ms ± 4.7 ms,       same as baseline
    16384: OK
      192  ms ±  14 ms,       same as baseline
  funcCall
    2:     OK
      47.1 μs ± 3.7 μs,       same as baseline
    4:     OK
      64.5 μs ± 4.2 μs,       same as baseline
    8:     OK
      102  μs ± 7.5 μs,       same as baseline
    16:    OK
      172  μs ± 5.9 μs,       same as baseline
    32:    OK
      322  μs ±  29 μs,       same as baseline
    64:    OK
      608  μs ±  58 μs,       same as baseline
    128:   OK
      1.22 ms ±  70 μs,       same as baseline
    256:   OK
      2.32 ms ± 105 μs,       same as baseline
    512:   OK
      4.54 ms ± 314 μs,       same as baseline
    1024:  OK
      8.90 ms ± 758 μs,       same as baseline
    2048:  OK
      17.7 ms ± 1.2 ms,       same as baseline
    4096:  OK
      35.2 ms ± 3.4 ms,       same as baseline
    8192:  OK
      70.2 ms ± 4.4 ms,       same as baseline
    16384: OK
      140  ms ± 8.9 ms,       same as baseline
  contractCreation
    2:     OK
      81.7 μs ± 7.5 μs, 10% more than baseline
    4:     OK
      137  μs ±  13 μs, 13% more than baseline
    8:     OK
      242  μs ±  13 μs, 14% more than baseline
    16:    OK
      471  μs ±  29 μs, 13% more than baseline
    32:    OK
      1.01 ms ±  64 μs, 18% more than baseline
    64:    OK
      2.55 ms ± 115 μs, 25% more than baseline
    128:   OK
      6.31 ms ± 423 μs, 21% more than baseline
    256:   OK
      12.4 ms ± 853 μs, 11% more than baseline
    512:   OK
      26.2 ms ± 2.4 ms,       same as baseline
    1024:  OK
      55.6 ms ± 4.9 ms,       same as baseline
    2048:  OK
      108  ms ± 4.8 ms,  6% more than baseline
    4096:  OK
      229  ms ±  11 ms,  8% more than baseline
    8192:  OK
      466  ms ±  28 ms, 12% more than baseline
    16384: OK
      893  ms ±  67 ms,       same as baseline
  contractCreationMem
    2:     OK
      352  μs ±  27 μs, 16% more than baseline
    4:     OK
      662  μs ±  53 μs, 19% more than baseline
    8:     OK
      1.58 ms ± 113 μs, 32% more than baseline
    16:    OK
      3.85 ms ± 258 μs, 22% more than baseline
    32:    OK
      8.30 ms ± 435 μs, 15% more than baseline
    64:    OK
      17.3 ms ± 1.0 ms, 11% more than baseline
    128:   OK
      35.8 ms ± 2.1 ms,  7% more than baseline
    256:   OK
      73.2 ms ± 5.2 ms,       same as baseline
    512:   OK
      150  ms ±  15 ms,       same as baseline
    1024:  OK
      314  ms ± 8.9 ms,       same as baseline
    2048:  OK
      662  ms ±  65 ms,       same as baseline
    4096:  OK
      1.267 s ±  74 ms,       same as baseline
    8192:  OK
      2.508 s ± 129 ms,       same as baseline
    16384: OK
      5.193 s ± 252 ms,  5% more than baseline
  arrayCreationMem
    2:     OK
      176  μs ±  15 μs, 25% more than baseline
    4:     OK
      502  μs ±  38 μs, 35% more than baseline
    8:     OK
      1.81 ms ± 115 μs, 40% more than baseline
    16:    OK
      6.36 ms ± 501 μs, 40% more than baseline
    32:    OK
      24.3 ms ± 1.8 ms, 39% more than baseline
    64:    OK
      95.6 ms ± 4.6 ms, 40% more than baseline
    128:   OK
      376  ms ±  17 ms, 40% more than baseline
    256:   OK
      1.501 s ±  32 ms, 41% more than baseline
    512:   OK
      5.974 s ±  67 ms, 41% more than baseline
  mapStorage
    2:     OK
      68.5 μs ± 4.7 μs, 15% more than baseline
    4:     OK
      115  μs ± 6.8 μs, 15% more than baseline
    8:     OK
      212  μs ±  13 μs, 17% more than baseline
    16:    OK
      402  μs ±  29 μs, 17% more than baseline
    32:    OK
      803  μs ±  56 μs, 20% more than baseline
    64:    OK
      1.66 ms ± 108 μs, 21% more than baseline
    128:   OK
      3.41 ms ± 259 μs, 20% more than baseline
    256:   OK
      6.93 ms ± 549 μs, 20% more than baseline
    512:   OK
      13.9 ms ± 889 μs, 18% more than baseline
    1024:  OK
      28.0 ms ± 1.8 ms, 18% more than baseline
    2048:  OK
      56.1 ms ± 4.5 ms, 18% more than baseline
    4096:  OK
      114  ms ± 7.3 ms, 19% more than baseline
    8192:  OK
      229  ms ±  15 ms, 21% more than baseline
    16384: OK
      459  ms ±  41 ms, 20% more than baseline
  swapOperations
    2:     OK
      167  μs ±  14 μs,       same as baseline
    4:     OK
      195  μs ±  17 μs,       same as baseline
    8:     OK
      247  μs ±  16 μs,       same as baseline
    16:    OK
      351  μs ±  28 μs,       same as baseline
    32:    OK
      555  μs ±  53 μs,       same as baseline
    64:    OK
      1.02 ms ±  54 μs,       same as baseline
    128:   OK
      1.82 ms ± 113 μs,       same as baseline
    256:   OK
      3.34 ms ± 257 μs,       same as baseline
    512:   OK
      6.22 ms ± 476 μs,       same as baseline
    1024:  OK
      12.1 ms ± 1.2 ms,       same as baseline
    2048:  OK
      23.9 ms ± 1.9 ms,       same as baseline
    4096:  OK
      47.4 ms ± 4.6 ms,       same as baseline
    8192:  OK
      93.4 ms ± 8.7 ms,       same as baseline
    16384: OK
      187  ms ±  14 ms,       same as baseline

@blishko
Copy link
Collaborator

blishko commented Feb 26, 2026

Numbers for GHC 9.12.2
All
  loop
    2:     OK
      31.8 μs ± 2.7 μs, 13% more than baseline
    4:     OK
      48.1 μs ± 4.1 μs, 15% more than baseline
    8:     OK
      79.2 μs ± 7.5 μs, 16% more than baseline
    16:    OK
      141  μs ±  14 μs, 17% more than baseline
    32:    OK
      268  μs ±  14 μs, 19% more than baseline
    64:    OK
      515  μs ±  15 μs, 20% more than baseline
    128:   OK
      1.03 ms ±  59 μs, 20% more than baseline
    256:   OK
      2.04 ms ± 110 μs, 21% more than baseline
    512:   OK
      3.99 ms ± 251 μs, 21% more than baseline
    1024:  OK
      7.90 ms ± 489 μs, 21% more than baseline
    2048:  OK
      15.8 ms ± 1.1 ms, 20% more than baseline
    4096:  OK
      31.8 ms ± 2.8 ms, 22% more than baseline
    8192:  OK
      63.6 ms ± 3.8 ms, 22% more than baseline
    16384: OK
      128  ms ±  12 ms, 21% more than baseline
  primes
    2:     OK
      103  μs ± 6.7 μs, 11% more than baseline
    4:     OK
      155  μs ± 7.0 μs, 13% more than baseline
    8:     OK
      252  μs ±  14 μs, 15% more than baseline
    16:    OK
      486  μs ±  32 μs, 15% more than baseline
    32:    OK
      1.10 ms ±  62 μs, 15% more than baseline
    64:    OK
      2.35 ms ± 215 μs, 14% more than baseline
    128:   OK
      5.24 ms ± 486 μs, 15% more than baseline
    256:   OK
      12.3 ms ± 947 μs, 15% more than baseline
    512:   OK
      29.4 ms ± 2.0 ms, 15% more than baseline
    1024:  OK
      71.4 ms ± 3.4 ms, 15% more than baseline
    2048:  OK
      177  ms ±  17 ms, 15% more than baseline
    4096:  OK
      441  ms ±  41 ms, 15% more than baseline
    8192:  OK
      1.102 s ±  72 ms, 15% more than baseline
    16384: OK
      2.788 s ±  45 ms, 15% more than baseline
  hashes
    2:     OK
      45.6 μs ± 3.4 μs, 22% more than baseline
    4:     OK
      73.7 μs ± 6.8 μs, 22% more than baseline
    8:     OK
      131  μs ± 7.2 μs, 25% more than baseline
    16:    OK
      244  μs ±  13 μs, 25% more than baseline
    32:    OK
      473  μs ±  33 μs, 29% more than baseline
    64:    OK
      933  μs ±  77 μs, 28% more than baseline
    128:   OK
      1.89 ms ± 116 μs, 28% more than baseline
    256:   OK
      3.80 ms ± 211 μs, 26% more than baseline
    512:   OK
      7.62 ms ± 723 μs, 25% more than baseline
    1024:  OK
      15.2 ms ± 848 μs, 24% more than baseline
    2048:  OK
      30.2 ms ± 1.7 ms, 26% more than baseline
    4096:  OK
      60.0 ms ± 3.4 ms, 26% more than baseline
    8192:  OK
      119  ms ± 4.3 ms, 27% more than baseline
    16384: OK
      237  ms ±  16 ms, 25% more than baseline
  hashmem
    2:     OK
      71.8 μs ± 3.6 μs, 20% more than baseline
    4:     OK
      115  μs ± 6.6 μs, 25% more than baseline
    8:     OK
      202  μs ±  19 μs, 27% more than baseline
    16:    OK
      372  μs ±  29 μs, 29% more than baseline
    32:    OK
      719  μs ±  54 μs, 30% more than baseline
    64:    OK
      1.49 ms ± 112 μs, 33% more than baseline
    128:   OK
      2.97 ms ± 115 μs, 28% more than baseline
    256:   OK
      5.97 ms ± 451 μs, 26% more than baseline
    512:   OK
      12.0 ms ± 863 μs, 26% more than baseline
    1024:  OK
      24.1 ms ± 1.9 ms, 22% more than baseline
    2048:  OK
      47.9 ms ± 3.5 ms, 24% more than baseline
    4096:  OK
      94.8 ms ± 8.7 ms, 23% more than baseline
    8192:  OK
      193  ms ±  14 ms, 24% more than baseline
    16384: OK
      390  ms ±  37 ms, 26% more than baseline
  balanceTransfer
    2:     OK
      3.71 ms ± 225 μs,       same as baseline
    4:     OK
      3.73 ms ± 254 μs,       same as baseline
    8:     OK
      3.82 ms ± 218 μs,       same as baseline
    16:    OK
      3.88 ms ± 251 μs,       same as baseline
    32:    OK
      4.10 ms ± 224 μs,       same as baseline
    64:    OK
      4.51 ms ± 228 μs,       same as baseline
    128:   OK
      5.39 ms ± 430 μs,       same as baseline
    256:   OK
      7.60 ms ± 456 μs, 13% more than baseline
    512:   OK
      11.7 ms ± 1.0 ms, 14% more than baseline
    1024:  OK
      19.1 ms ± 1.9 ms, 13% more than baseline
    2048:  OK
      33.5 ms ± 2.0 ms, 17% more than baseline
    4096:  OK
      61.0 ms ± 3.7 ms, 18% more than baseline
    8192:  OK
      118  ms ± 8.5 ms, 19% more than baseline
    16384: OK
      229  ms ±  15 ms, 18% more than baseline
  funcCall
    2:     OK
      52.3 μs ± 3.8 μs,  9% more than baseline
    4:     OK
      74.3 μs ± 7.0 μs, 12% more than baseline
    8:     OK
      117  μs ± 8.1 μs, 11% more than baseline
    16:    OK
      203  μs ±  15 μs, 13% more than baseline
    32:    OK
      375  μs ±  30 μs, 12% more than baseline
    64:    OK
      717  μs ±  57 μs, 13% more than baseline
    128:   OK
      1.42 ms ± 109 μs, 12% more than baseline
    256:   OK
      2.74 ms ± 241 μs, 13% more than baseline
    512:   OK
      5.35 ms ± 444 μs, 12% more than baseline
    1024:  OK
      10.7 ms ± 1.1 ms, 13% more than baseline
    2048:  OK
      21.1 ms ± 1.7 ms, 14% more than baseline
    4096:  OK
      42.0 ms ± 3.6 ms, 13% more than baseline
    8192:  OK
      84.4 ms ± 7.3 ms, 14% more than baseline
    16384: OK
      168  ms ±  15 ms, 13% more than baseline
  contractCreation
    2:     OK
      89.9 μs ± 7.1 μs, 21% more than baseline
    4:     OK
      151  μs ±  14 μs, 24% more than baseline
    8:     OK
      268  μs ±  15 μs, 27% more than baseline
    16:    OK
      528  μs ±  33 μs, 27% more than baseline
    32:    OK
      1.14 ms ±  53 μs, 33% more than baseline
    64:    OK
      2.73 ms ± 216 μs, 34% more than baseline
    128:   OK
      6.28 ms ± 469 μs, 21% more than baseline
    256:   OK
      13.2 ms ± 935 μs, 18% more than baseline
    512:   OK
      27.3 ms ± 1.9 ms, 12% more than baseline
    1024:  OK
      58.0 ms ± 4.5 ms, 12% more than baseline
    2048:  OK
      114  ms ± 6.3 ms, 12% more than baseline
    4096:  OK
      238  ms ±  14 ms, 11% more than baseline
    8192:  OK
      479  ms ±  38 ms, 15% more than baseline
    16384: OK
      949  ms ±  27 ms,  9% more than baseline
  contractCreationMem
    2:     OK
      373  μs ±  26 μs, 23% more than baseline
    4:     OK
      712  μs ±  54 μs, 28% more than baseline
    8:     OK
      1.66 ms ± 113 μs, 39% more than baseline
    16:    OK
      3.97 ms ± 210 μs, 26% more than baseline
    32:    OK
      8.41 ms ± 534 μs, 17% more than baseline
    64:    OK
      17.6 ms ± 1.3 ms, 13% more than baseline
    128:   OK
      36.9 ms ± 1.9 ms, 11% more than baseline
    256:   OK
      75.6 ms ± 4.3 ms,  7% more than baseline
    512:   OK
      155  ms ± 7.9 ms,       same as baseline
    1024:  OK
      320  ms ±  11 ms,  5% more than baseline
    2048:  OK
      650  ms ±  14 ms,       same as baseline
    4096:  OK
      1.312 s ±  69 ms,  8% more than baseline
    8192:  OK
      2.719 s ± 116 ms, 11% more than baseline
    16384: OK
      5.274 s ± 505 ms,       same as baseline
  arrayCreationMem
    2:     OK
      180  μs ±  17 μs, 27% more than baseline
    4:     OK
      513  μs ±  28 μs, 38% more than baseline
    8:     OK
      1.85 ms ± 107 μs, 43% more than baseline
    16:    OK
      6.72 ms ± 495 μs, 48% more than baseline
    32:    OK
      25.6 ms ± 1.7 ms, 46% more than baseline
    64:    OK
      100  ms ± 7.0 ms, 47% more than baseline
    128:   OK
      393  ms ±  31 ms, 47% more than baseline
    256:   OK
      1.561 s ±  33 ms, 46% more than baseline
    512:   OK
      6.203 s ±  76 ms, 46% more than baseline
  mapStorage
    2:     OK
      73.0 μs ± 6.8 μs, 23% more than baseline
    4:     OK
      128  μs ±  10 μs, 28% more than baseline
    8:     OK
      232  μs ±  15 μs, 28% more than baseline
    16:    OK
      451  μs ±  41 μs, 31% more than baseline
    32:    OK
      925  μs ±  55 μs, 38% more than baseline
    64:    OK
      1.86 ms ± 149 μs, 35% more than baseline
    128:   OK
      3.67 ms ± 340 μs, 29% more than baseline
    256:   OK
      7.38 ms ± 513 μs, 28% more than baseline
    512:   OK
      14.8 ms ± 1.0 ms, 25% more than baseline
    1024:  OK
      29.6 ms ± 1.9 ms, 25% more than baseline
    2048:  OK
      59.1 ms ± 3.9 ms, 25% more than baseline
    4096:  OK
      119  ms ± 7.1 ms, 24% more than baseline
    8192:  OK
      241  ms ±  14 ms, 27% more than baseline
    16384: OK
      497  ms ±  43 ms, 30% more than baseline
  swapOperations
    2:     OK
      195  μs ±  13 μs, 15% more than baseline
    4:     OK
      232  μs ±  14 μs, 19% more than baseline
    8:     OK
      307  μs ±  14 μs, 23% more than baseline
    16:    OK
      453  μs ±  32 μs, 28% more than baseline
    32:    OK
      759  μs ±  54 μs, 35% more than baseline
    64:    OK
      1.44 ms ± 110 μs, 40% more than baseline
    128:   OK
      2.66 ms ± 213 μs, 45% more than baseline
    256:   OK
      5.09 ms ± 445 μs, 49% more than baseline
    512:   OK
      9.90 ms ± 919 μs, 54% more than baseline
    1024:  OK
      19.6 ms ± 1.8 ms, 56% more than baseline
    2048:  OK
      39.0 ms ± 3.6 ms, 56% more than baseline
    4096:  OK
      77.3 ms ± 7.1 ms, 57% more than baseline
    8192:  OK
      154  ms ±  14 ms, 56% more than baseline
    16384: OK
      314  ms ±  27 ms, 60% more than baseline

Doesn't look very good :(

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants