leaky 0.1.0.2 → 0.1.0.3
raw patch · 4 files changed
+13/−9 lines, 4 files
Files
- HTML/leaky.html +6/−3
- HTML/output.html +2/−2
- HTML/style.css +1/−0
- leaky.cabal +4/−4
HTML/leaky.html view
@@ -65,7 +65,7 @@ Of course! We can keep studying the phenomenon: <ul>-<li>programming practise evolves as leaky coding patterns are recognised+<li>programming practise evolves as leaky patterns are recognised <li>compilers get better at optimising leak away <li>diagnostic and remedial tool support improves (for instance <a href="http://hackage.haskell.org/package/seqaid">seqaid</a>) </ul>@@ -90,7 +90,7 @@ <h3>Show me a simple example of a program that leaks</h3> The <a href="http://hackage.haskell.org/package/leaky">leaky</a> package contains a small Haskell 98 program known to leak even with -O2 optimisation under GHC 7.8.3.-It also contains build flavours which test some new tools (<a href="http://hackage.haskell.org/package/deepseq-bounded">deepseq-bounded</a> and <a href="http://hackage.haskell.org/package/seqaid">seqaid</a>). +It also contains build flavours which test some new tools (<a href="http://hackage.haskell.org/package/deepseq-bounded"><span class="nowrap">deepseq-bounded</span></a> and <a href="http://hackage.haskell.org/package/seqaid">seqaid</a>). Installing <tt>seqaid</tt> and running <tt>seqaid demo</tt> is a good way to get started experimenting with <tt>leaky</tt>. <!--Installing <a href="http://hackage.haskell.org/package/seqaid">seqaid</a> and running <tt>seqaid demo</tt> is a good way to get started experimenting with <a href="http://hackage.haskell.org/package/leaky">leaky</a>.--> @@ -146,7 +146,7 @@ </div> <p>-And <a href="leaky-min.hs">leaky-min.hs</a> is the same program with some extras to tinker with.+And here is the same program with some extras to tinker with. <p> <a id="dig01s" class="dig-toggle-show" href='javascript:toggle("dig01");'>Show</a>@@ -309,6 +309,9 @@ </pre> </div>++<p>+These and other variants are available in the <tt>leaky</tt> source package. <h3>Explanation of Output</h3>
HTML/output.html view
@@ -51,11 +51,11 @@ <p> A few comments are in order: <ul>-<li>You can see the space leak as a steady, substantial growth in the heap size, from N=0 through N=5, and again in the first five pattern lines.+<li>You can see the space leak as a steady, substantial growth in the heap size, from <tt><em>N</em></tt> equal 0 through 5, and again in the first five pattern lines. <li>You can see the first large, strict blobs get hit at a depth of 5 (with <tt>forcen</tt>). <li>Unfortunately :) it is not until a depth of 6 that the leak can be plugged. (Well, you can plug it without forcing the spine, using let-lifting, but <tt>seqaid</tt> doesn't do that yet.) So <tt>NFDataN</tt> is not a feasible solution for this leak. <li><tt>NFDataP.forcep</tt> successfully plugs the leak without hitting the big strict blobs.-<li>This output doesn't show how <tt>NFData</tt> would perform worse, but for large N there is additional penalty due to the presence of some long lists (not strict, but deep) in the state.+<li>This output doesn't show how <tt>NFData</tt> would perform worse, but for large <tt><em>N</em></tt> there is additional penalty due to the presence of some long lists (not strict, but deep) in the state. <!--<li>It may appear there is still a slight leak in the heap, with the final pattern, but if the run is extended, this space is reclaimed periodically. I don't quite understand this, since I am using <tt>performGC</tt> before each stats line is printed, but the fact is there is no longitudinal net growth. (Oops, I don't see it in this paste anyways...).-->
HTML/style.css view
@@ -26,3 +26,4 @@ tr { text-align: top; vertical-align: top; } td { text-align: top; vertical-align: top; padding-left: 8px; padding-top: 16px; } li { margin-top: 4px; }+.nowrap { white-space: nowrap; }
leaky.cabal view
@@ -1,17 +1,17 @@ name: leaky-version: 0.1.0.2+version: 0.1.0.3 synopsis: Robust space leak, and its strictification description: Robust space leak, and its strictification, for testing <http://hackage.haskell.org/package/deepseq-bounded deepseq-bounded> and <http://hackage.haskell.org/package/seqaid seqaid>. . See also the project <http://www.fremissant.net/leaky homepage> for more information. . Please share your comments on this <http://www.reddit.com/r/haskell/comments/2pscxh/ann_deepseqbounded_seqaid_leaky/ reddit> discussion.+homepage: http://www.fremissant.net/leaky license: BSD3 license-file: LICENSE-author: Andrew Seniuk-maintainer: rasfar@gmail.com-homepage: http://www.fremissant.net/leaky+author: Andrew G. Seniuk+maintainer: Andrew Seniuk <rasfar@gmail.com> category: Testing build-type: Simple cabal-version: >=1.10