{"push_id":1327627513,"size":3,"distinct_size":3,"ref":"refs/heads/master","head":"a98576fb483476f551bac77e7edc70a1d956f987","before":"d900c87dff7a588e7f725eef33fa847b35ac3db9","commits":[{"sha":"cbddd8cbb8321d767d42f048d0b4e9e836e06331","author":{"name":"Herbert Valerio Riedel","email":"cd0433cd53818d3212d5dd6752f1a697096e3614@gnu.org"},"message":"Optimise `Version` representation\n\nThis optimises the `[Int]` representation to a 16-byte heap object for\n~99% of version numbers (up to 4 components, each within a [0..0xfffe]\nvalue range) occuring on Hackage.\n\nOne noteworthy improvement of this optimisation is a significant reduction\nof the size of the 01-index.cache file from previously 6299700 bytes\n(before #3905) down to 3408864 bytes, i.e. down to ~54%\n\nAlso, this reduces the memory footprint and GC overhead a bit for\ne.g. `cabal info zzz` (which reads in the index cache) from\n\n    cabal.0: There is no package named 'zzz'.\n    You may need to run 'cabal update' to get the latest list of available\n    packages.\n         859,337,368 bytes allocated in the heap\n         447,261,128 bytes copied during GC\n          37,385,208 bytes maximum residency (19 sample(s))\n           1,311,136 bytes maximum slop\n                 103 MB total memory in use (0 MB lost due to fragmentation)\n\n                                         Tot time (elapsed)  Avg pause  Max pause\n      Gen  0      1613 colls,     0 par    0.268s   0.268s     0.0002s    0.0012s\n      Gen  1        19 colls,     0 par    0.227s   0.227s     0.0119s    0.0506s\n\n      TASKS: 4 (1 bound, 3 peak workers (3 total), using -N1)\n\n      SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n\n      INIT    time    0.001s  (  0.001s elapsed)\n      MUT     time    0.431s  (  0.758s elapsed)\n      GC      time    0.495s  (  0.495s elapsed)\n      EXIT    time    0.006s  (  0.005s elapsed)\n      Total   time    0.934s  (  1.259s elapsed)\n\n      Alloc rate    1,991,870,623 bytes per MUT second\n\n      Productivity  46.9% of total user, 34.8% of total elapsed\n\nto\n\n    cabal.1: There is no package named 'zzz'.\n    You may need to run 'cabal update' to get the latest list of available\n    packages.\n         834,314,392 bytes allocated in the heap\n         440,791,176 bytes copied during GC\n          36,663,112 bytes maximum residency (19 sample(s))\n           2,225,040 bytes maximum slop\n                  96 MB total memory in use (0 MB lost due to fragmentation)\n\n                                         Tot time (elapsed)  Avg pause  Max pause\n      Gen  0      1574 colls,     0 par    0.254s   0.254s     0.0002s    0.0007s\n      Gen  1        19 colls,     0 par    0.223s   0.223s     0.0118s    0.0474s\n\n      TASKS: 4 (1 bound, 3 peak workers (3 total), using -N1)\n\n      SPARKS: 0 (0 converted, 0 overflowed, 0 dud, 0 GC'd, 0 fizzled)\n\n      INIT    time    0.001s  (  0.001s elapsed)\n      MUT     time    0.383s  (  0.699s elapsed)\n      GC      time    0.477s  (  0.477s elapsed)\n      EXIT    time    0.005s  (  0.005s elapsed)\n      Total   time    0.869s  (  1.182s elapsed)\n\n      Alloc rate    2,175,866,164 bytes per MUT second\n\n      Productivity  44.9% of total user, 33.0% of total elapsed","distinct":true,"url":"https://api.github.com/repos/haskell/cabal/commits/cbddd8cbb8321d767d42f048d0b4e9e836e06331"},{"sha":"aabee7c3633eb276cf417459e31a5162a5b7bfae","author":{"name":"Herbert Valerio Riedel","email":"cd0433cd53818d3212d5dd6752f1a697096e3614@gnu.org"},"message":"Optimise `Ord Version` instance\n\nProfiling showed that there are quite a few 'Ord' calls (~70k calls)\nwhich result in 'versionNumbers' being evaluated because the need to\ncompare with Versions not fitting in a Word64 becomes necessary, mostly\nwhen inserting into a `Map`. So I've optimised this a bit more.  After\nsome experimentation, the new `compare` implemetation results in faster\ncomparisions (`cmpOpt` is the new optimised impl, `compare` is the\nprevious naive one):\n\ncomparing two PV1 constructors:\n\n    benchmarking compare 1.2.3.4.5 1.2.3.4.5\n    time                 42.33 ns   (42.17 ns .. 42.47 ns)\n                         1.000 R²   (1.000 R² .. 1.000 R²)\n    mean                 42.17 ns   (42.13 ns .. 42.28 ns)\n    std dev              205.1 ps   (128.7 ps .. 325.7 ps)\n\n    benchmarking cmpOpt  1.2.3.4.5 1.2.3.4.5\n    time                 33.31 ns   (33.23 ns .. 33.40 ns)\n                         1.000 R²   (1.000 R² .. 1.000 R²)\n    mean                 33.37 ns   (33.29 ns .. 33.46 ns)\n    std dev              288.6 ps   (242.9 ps .. 315.8 ps)\n\n    benchmarking compare [1.2.3.4.5] [1.2.3.4.5]\n    time                 31.92 ns   (31.89 ns .. 31.94 ns)\n                         1.000 R²   (1.000 R² .. 1.000 R²)\n    mean                 31.89 ns   (31.88 ns .. 31.91 ns)\n    std dev              37.09 ps   (24.38 ps .. 54.82 ps)\n\ncomparing a PV0 constructor with a PV1 constructor when the first digit\ndecides the outcome:\n\n    benchmarking compare 2.3.4 1.2.3.4.5\n    time                 24.96 ns   (24.78 ns .. 25.25 ns)\n                         0.996 R²   (0.989 R² .. 1.000 R²)\n    mean                 25.50 ns   (24.95 ns .. 26.95 ns)\n    std dev              2.802 ns   (1.275 ns .. 5.163 ns)\n    variance introduced by outliers: 93% (severely inflated)\n\n    benchmarking cmpOpt  2.3.4 1.2.3.4.5\n    time                 11.29 ns   (11.27 ns .. 11.30 ns)\n                         1.000 R²   (1.000 R² .. 1.000 R²)\n    mean                 11.28 ns   (11.27 ns .. 11.29 ns)\n    std dev              24.69 ps   (12.02 ps .. 46.86 ps)\n\n    benchmarking compare [2.3.4] [1.2.3.4.5]\n    time                 11.05 ns   (11.04 ns .. 11.06 ns)\n                         1.000 R²   (1.000 R² .. 1.000 R²)\n    mean                 11.05 ns   (11.04 ns .. 11.06 ns)\n    std dev              32.82 ps   (15.89 ps .. 61.64 ps)\n\nThese timings are now very close to the 'Ord [Int]' timings.\n\nWith this optimisation, the total number of 'versionNumbers' calls\nreported by `+RTS -p` for `cabal new-build --dry`'ing haskell-ide-engine\nwent down from originally 73501 calls to 6789 calls.","distinct":true,"url":"https://api.github.com/repos/haskell/cabal/commits/aabee7c3633eb276cf417459e31a5162a5b7bfae"},{"sha":"a98576fb483476f551bac77e7edc70a1d956f987","author":{"name":"Herbert Valerio Riedel","email":"cd0433cd53818d3212d5dd6752f1a697096e3614@gnu.org"},"message":"Update test-suite to test more `Version` properties","distinct":true,"url":"https://api.github.com/repos/haskell/cabal/commits/a98576fb483476f551bac77e7edc70a1d956f987"}]}
{"actor":{"display_login":"hvr"}}