Sorry to disturb you.
According to the Racket Guide,
When letrec is used to bind only procedures and literals, then the compiler can treat the bindings in an optimal manner, compiling uses of the bindings efficiently.
Primitive operations are inlined at the machine-code level.
The communication costs for places can be fairly high.
The racket library is much larger than the sum of the racket/base library, the racket/format library, etc.
After the optimization, the performance had a slight improvement.(Tested on racket8.4, ubuntu20.04, AMD RYZEN7)
Sorry to disturb you. According to the Racket Guide,
letrec
is used to bind only procedures and literals, then the compiler can treat the bindings in an optimal manner, compiling uses of the bindings efficiently.After the optimization, the performance had a slight improvement.(Tested on racket8.4, ubuntu20.04, AMD RYZEN7)