ghc-datasize
データのバイト数がわかる
ghc-8.6.5 で試した
Lifted type にしか使えないっぽい
0#
とかは使えなかった。levity polymorphism を使えば良いかも?
使い方
関数は3つしかない
closureSize :: a -> IO Word
recursiveSize :: a -> IO Word
recursiveSizeNF :: NFData a => a -> IO Word
data | closureSize | recursiveSize | recursiveSizeNF |
| 16 | 16 | 56 |
| 16 | 16 | 56 |
| 16 | 16 | 56 |
| 16 | 16 | - |
| 16 | 16 | 240 |
| 16 | 16 | 392 |
| 24 | 56 | 280 |
| 24 | 96 | 320 |
| 24 | 136 | 360 |
| 16 | 16 | 240 |
| 16 | 32 | 256 |
| 32 | 1648 | - |
deepseq でサイズが変化する例
参考リソース
Last updated