Quale linguaggio di programmazione insieme all'implementazione e al compilatore posso usare per studiare la complessità dello spazio pura e non ottimizzata di un algoritmo arbitrario? E quali metodi posso usare per farlo?
Ad esempio, Scheme ed Elixir implementano l'ottimizzazione delle chiamate tail. Se l'algoritmo che ho scritto fosse ricorsivo, qualunque metodo potessi usare per ottenere nello stack potrebbe mostrare O(1)
di complessità spaziale.
Un altro esempio, NodeJS implementa la garbage collection. Per qualsiasi struttura di dati che inizializzo nel mio algoritmo, non saprò se sono allocate nello stack o nell'heap, quindi chiamare il metodo process.memoryUsage()
non mi consentirà di eseguire il benchmark in modo coerente.
Se posso selezionare un ambiente per analizzare la complessità dello spazio di base di un algoritmo, posso quindi confrontarlo con altri ambienti e quindi scegliere lo strumento giusto per il lavoro.