What programming language along with implementation and compiler can I use to study the pure, unoptimized space complexity of an arbitrary algorithm? And what methods can I use to do so?
For example, Scheme and Elixir implement tail call optimization. If the algorithm I wrote were recursive, whatever methods I could use to get at the stack might show
O(1) space complexity.
Another example, NodeJS implements garbage collection. For any data structures I initialize in my algorithm, I won't know if they are allocated on the stack or the heap so calling the
process.memoryUsage() method won't allow me to benchmark consistently.
If I can select an environment to analyze the baseline space complexity of an algorithm, I can then compare it to other environments and thus choose the right tool for the job.