|
Hi All,
I pushed out a series of commits which support the "NaN boxing" scheme for dynamically typed value representation.
Under NaN boxing, floating-point values aren't heap allocated; they fit directly into the value word. Floating-point calculations stop consing memory.
TXR 281:
1> (pprof (+ 1.0 3 4 5 6 7))
malloc bytes: 0
gc heap bytes: 160
total: 160
milliseconds: 0
26.0
Current, built with NaN boxing:
1> (pprof (+ 1.0 3 4 5 6 7))
malloc bytes: 0
gc heap bytes: 0
total: 0
milliseconds: 0
26.0
NaN boxing is new and experimental; but TXR builds and all tests pass. It is enabled using:
./configure --nan-boxing
which will deposit a #define CONFIG_NAN_BOXING 1 into config.h.
Eventually it will be the default on 64 it platforms, possible to disable with --no-nan-boxing.
Under NaN boxing, we lose quite a bit of fixnum precision: fixnum integers are reduced from 62 bits to 50 bits. The run-time has more bit fiddling to deal with to decode values so code that doesn't benefit from NaN boxing may be slightly affected.
This message was posted to the following mailing lists: | ||||
---|---|---|---|---|
TXR Users Mailing list info | Nearby messages |
Kaz'z Mailing List Archives adminstered by Kaz | Lurker (version 2.3, substantialy hacked by Kaz). Icon artwork from VisualPharm. |