Removing recursion via explicit callstack simulation

(jnkr.tech)

16 points | by gsky 2 days ago ago

4 comments

  • juancn 2 days ago ago

    It can be done mechanically, it's essentially what a compiler does.

    But yeah, it can be a useful technique, specially when there's tail recursion and the explicit stack just vanishes and the recursion turns into a plain old loop which the hardware just loves.

  • Panzerschrek a day ago ago

    While coding recursive algorithms in C++ and Rust I have found, that they have some overhead due to performing recursive calls. Compilers can't inline such calls (with exception of tail-recursion). So, replacing recursion with manually-managed stack gives some performance boost. I am wondering why no major C++ compiler can do this for me automatically.

  • kinow a day ago ago

    It is common in Python too. Reduces memory and eliminates stack errors in some cases. Althoughin Python I think the developer always needs to implement it and cannot rely on compiler/interpreter to optimize that.

  • undefined 2 days ago ago
    [deleted]