The compilers producing MAL may generate an abundance of temporary variables to hold the result of expressions. This leads to a pollution of the run-time stack space, because space should be allocated and garbage collection tests should be performed.
The routine optimizer.reduce()
reduces the number of scratch variables to a minimum.
All scratch variables of the same underlying type share the storage space.
The result of this optimizer can be seen using the MonetDB debugger, which marks unused variables explicitly.
Experience with the SQL front-end shows, that this optimization step easily reduces the stack consumption by over 20%.