All About Recursion and Tail Calls in JavaScript
lucasfcosta.com
All About Recursion and Tail Calls in JavaScript
1–10 of 22 posts
Re: All About Recursion and Tail Calls in JavaScript
#2Re: All About Recursion and Tail Calls in JavaScript
#3What's the best way to benchmark perf optimizations in JavaScript. I see lot of articles like this with no time and memory usage stats. I would like to hear an answer from someone who has experience using gdb or visual studio while studying performance. Whenever I use the chrome debugger to time anything involving async calls and recursion I have this uncomfortable feeling I am not getting it right. With gdb or visua…
But an important piece of advice is at the bottom of one of their pages [1]: "Avoid micro-optimizing your JavaScript". Apart from their argument there, keep in mind you are programming for a number of very different runtime environments. An optimization that gives you a big boost in one implementation may slow you down on another one. That is true not just between various vendors but also among runtime versions from the same vendor.
[0] https://developers.google.com/web/tools/chrome-devtools/eval...
[1] https://developers.google.com/web/fundamentals/performance/r...
Re: All About Recursion and Tail Calls in JavaScript
#4What's the best way to benchmark perf optimizations in JavaScript. I see lot of articles like this with no time and memory usage stats. I would like to hear an answer from someone who has experience using gdb or visual studio while studying performance. Whenever I use the chrome debugger to time anything involving async calls and recursion I have this uncomfortable feeling I am not getting it right. With gdb or visua…
Google has a lot of content, for example "Chrome DevTools => Analyze Runtime Performance => Get Started With Analyzing Runtime Performance" [0]. But an important piece of advice is at the bottom of one of their pages [1]: "Avoid micro-optimizing your JavaScript". Apart from their argument there, keep in mind you are programming for a number of very different runtime environments. An optimization that gives you a big…
Re: All About Recursion and Tail Calls in JavaScript
#5Earlier quoted context omitted.
Google has a lot of content, for example "Chrome DevTools => Analyze Runtime Performance => Get Started With Analyzing Runtime Performance" [0]. But an important piece of advice is at the bottom of one of their pages [1]: "Avoid micro-optimizing your JavaScript". Apart from their argument there, keep in mind you are programming for a number of very different runtime environments. An optimization that gives you a big…
Ya but that's like a get out jail free card. I have been through their stuff. It's very superficial. JavaScript has all kinds of implementation dependent mechanics when it comes to promises/async calls/recursion. And when they are happening together, all I want are two numbers at the end of the process. How long did this take and how much memory did this take.
Example (memory profiling with heap snapshots): https://developers.google.com/web/tools/chrome-devtools/memo...
Profiling functions (V8, Chrome, using the CPU Profiler): https://developers.google.com/web/tools/chrome-devtools/rend...
What is missing there, I can see how long each function took, even more so when I combine it with the flame chart?
I assume you are still talking about the Javascript part. What the C++ based subsystem does can be examined using tools for that language on the respective platform.
Re: All About Recursion and Tail Calls in JavaScript
#6Small summary code: http://paste.ubuntu.com/24568118/
Re: All About Recursion and Tail Calls in JavaScript
#7What's the best way to benchmark perf optimizations in JavaScript. I see lot of articles like this with no time and memory usage stats. I would like to hear an answer from someone who has experience using gdb or visual studio while studying performance. Whenever I use the chrome debugger to time anything involving async calls and recursion I have this uncomfortable feeling I am not getting it right. With gdb or visua…
https://github.com/mafintosh/nanobench
For debugging llnode is super good:
Re: All About Recursion and Tail Calls in JavaScript
#8What's the best way to benchmark perf optimizations in JavaScript. I see lot of articles like this with no time and memory usage stats. I would like to hear an answer from someone who has experience using gdb or visual studio while studying performance. Whenever I use the chrome debugger to time anything involving async calls and recursion I have this uncomfortable feeling I am not getting it right. With gdb or visua…
Re: All About Recursion and Tail Calls in JavaScript
#9Until ES6 which introduces Tail Call Optimization, you can use trampolines. Small summary code: http://paste.ubuntu.com/24568118/
Re: All About Recursion and Tail Calls in JavaScript
#10What's the best way to benchmark perf optimizations in JavaScript. I see lot of articles like this with no time and memory usage stats. I would like to hear an answer from someone who has experience using gdb or visual studio while studying performance. Whenever I use the chrome debugger to time anything involving async calls and recursion I have this uncomfortable feeling I am not getting it right. With gdb or visua…
I know that's not the gdb-like experience you're looking for, but as far as I've found it's the best approach. The issue is that modern JS engines achieve their speed by tracking what happens at runtime and dynamically re-optimizing hot functions - so microbenchmarks are largely meaningless, and the performance of a given function can hugely affected by code that's far away.
(The above is for everyday. For extreme deep-diving, one can use JS engine tools to see what kind of internal representation your code has been compiled into after it got optimized. In chrome this is done with IRHydra - http://mrale.ph/irhydra/2/ .)