Work in progress: 181,232 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #7451

R

rfrn

Personal blog · rfrn.org/~shuprogrammingsystems

rfrn is a personal blog at rfrn.org about programming and systems. Since 2012, 10 different Hacker News readers have linked it 12 times, most often “Two Reasons Functional Style Is Slow in JavaScript implentations”. No feed was found, so read it on the site itself.

No feed foundVisit the blog
12mentions?
10HN people?
2012–2020first – last linked?
Links on Hacker News per year · peak 5 in 2014

Too few sampled comments (5) to say how often HN recommends it.?

Why HN links it

HN commenters cite Shu-Yu Guo's posts on JavaScript engine internals, including how JIT debuggers set breakpoints, why functional array methods are slow, and asm.js float optimisation. The comments use them as references for SpiderMonkey explanations.

Summarised by Claude from a sample of 5 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

Most-linked posts?

  1. Two Reasons Functional Style Is Slow in JavaScript implentations
    3 people · 3 mentions · first linked 2014-06-24
  2. The Semantics of All JavaScript Class Elements
    3 people · 3 mentions · first linked 2018-05-03
  3. Making SpiderMonkey's Debugger Just-In-Time
    2 people · 2 mentions · first linked 2014-11-21
  4. Debugging in the Time of JITs
    2 people · 2 mentions · first linked 2014-05-15

What Hacker News says?

  1. Usually they either run debugged code in the interpreter or recompile the JIT code in a special instrumentation mode. (Not having to monkey patch the code at runtime—being able to do a "proper" recompilation—is one of the advantages of having a JIT!) See this explanation of how it works in SpiderMonkey, for instance: http://rfrn.org/~shu/2014/11/20/speeding-up-debugger.html

    Comment linking /~shu/2014/11/20/speeding-up-debugger.html

    on “How breakpoints are set”
  2. Submitted Debugging in the Time of JITs as a story · 62 points

    HN discussion
  3. Yes. I did not take Bryan to task on that, but it really gives V8 a bit too much credit for it to cause Andreas Gal to work on trace-JIT before 2006 (on Java, for his UCI PhD; then on JS in collaboration with Adobe and Mozilla). Tracing was a good rocket to strap on SpiderMonkey-the-2008-era-interpreter but it fell to a combination of the PIC-based approach V8 championed and Brian Hackett's Type Inference work (PLDI…

    Comment linking /~shu/drafts/ti.pdf

    on “The State of JavaScript - Brendan Eich”
  4. Submitted Making SpiderMonkey's Debugger Just-In-Time as a story · 7 points

    HN discussion
  5. The slowness of functional methods like .map and .forEach for a time was due to their not being self-hosted. Since then, both V8 and SpiderMonkey self-host them, and bz has posted some numbers below [1]. But perf problems are more numerous still for these functional methods, because compilers in general have trouble inlining closures, especially for very polymorphic callsites like calls to the callback passed in via…

    Comment linking /~shu/2013/03/20/two-reasons-functional-style-is-slow-in-spidermonkey.html

    on “Show HN: Fast.js – faster reimplementations of native JavaScript functions”
  6. Submitted Debugging in the Time of JITs as a story · 4 points

    HN discussion
  7. A lot of it has to do with crossing boundaries between C++ and the JIT'd code and losing things like inlining. Doesn't really have to do with JS warts. This would likely get even faster if you manually specialized a map/forEach/etc for each caller, but then you might as well just write the loop out by hand: http://rfrn.org/~shu/2013/03/20/two-reasons-functional-style...

    Comment linking /~shu/2013/03/20/two-reasons-functional-style-is-slow-in-spidermonkey.html

    on “Show HN: Fast.js – faster reimplementations of native JavaScript functions”
  8. Submitted The Semantics of All JavaScript Class Elements as a story · 3 points

    HN discussion
  9. "I truly thought" you would not raise a question to which V8/Dart people already know the answer. Range prop is not the only solution. Use JIT techniques to speculate profitably that most ints fit in JS doubles. This can be done in JS-hosted VMs, just as in machine-code-generating native VMs. Again, this is extremely old hat to the Dart/V8 folks. See, e.g. http://mraleph.tumblr.com/post/24351748336/explaining-js-vm-…

    Comment linking /~shu/drafts/ti.pdf%E2%80%8E

    on “Gap between asm.js and native gets narrower with float32 optimizations”
  10. Submitted Two Reasons Functional Style Is Slow in JavaScript implentations as a story · 3 points

    HN discussion
  11. Submitted The Semantics of All JavaScript Class Elements as a story · 2 points

    HN discussion
  12. Submitted The Semantics of All JavaScript Class Elements as a story · 1 points

    HN discussion

Search all of HN for rfrn.org

Linked by the same people?