[plt-scheme] Are superfluous expressions optimized away?
Actually it looks like they do -- I entered these expressions in
mzscheme:
(compile '(lambda () (void) (printf "foo\n")))
(compile '(lambda () (printf "foo\n")))
(require mzscheme)
(compile '(lambda () (void) (printf "foo\n")))
(compile '(lambda () (printf "foo\n")))
and the last two (after hard-wiring mzscheme primitives) look shorter
*and* they're identical.
On Feb 20, Robby Findler wrote:
> They don't. But don't take my word for it. Do some timing tests.
>
> Robby
>
> On 2/20/07, Derick Eddington <derick.eddington at gmail.com> wrote:
> > Are superfluous expressions, like say '() or (void) when not in tail- or
> > binding- or pass-value-position or any other value-is-used position,
> > optimized away (maybe only when compiled to byte-code)? I'm wondering
> > if conditional compilation macros like (debug expr ...) which expand to
> > '() or (void) would incur zero performance penalty? If not, the
> > performance cost is probably very negligible?
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://www.barzilay.org/ Maze is Life!