diff options
author | Sverker Eriksson <[email protected]> | 2013-10-10 20:54:12 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2013-11-21 15:04:45 +0100 |
commit | 6cff38512b753172a7dfa2bedd60e8987156736d (patch) | |
tree | af10db00cb7f35b476a070d9f5c645e25f26e52f | |
parent | 1f09936f34f5daee534bbfde4f16e5bbb434b6c4 (diff) | |
download | otp-R16B02_yielding_binary_to_term.tar.gz otp-R16B02_yielding_binary_to_term.tar.bz2 otp-R16B02_yielding_binary_to_term.zip |
erts: Adjust term_to_binary reduction factorsR16B02_yielding_binary_to_term
Made them powers of 2 for faster calculations.
500 encoded terms per reductions seemed a bit much, lowered to 32.
TERM_TO_BINARY_SIZE_FACTOR was not used in practice as it was only
applied to small binaries.
Lowered from 500kb to 256kb compressed bytes per trap call.
-rw-r--r-- | erts/emulator/beam/external.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/erts/emulator/beam/external.c b/erts/emulator/beam/external.c index 7dc7ba6f98..4600d691c7 100644 --- a/erts/emulator/beam/external.c +++ b/erts/emulator/beam/external.c @@ -1717,12 +1717,10 @@ erts_term_to_binary(Process* p, Eterm Term, int level, Uint flags) { /* #define EXTREME_TTB_TRAPPING 1 */ #ifndef EXTREME_TTB_TRAPPING -#define TERM_TO_BINARY_LOOP_FACTOR 500 -#define TERM_TO_BINARY_SIZE_FACTOR 500000 -#define TERM_TO_BINARY_COMPRESS_CHUNK 500000 +#define TERM_TO_BINARY_LOOP_FACTOR 32 +#define TERM_TO_BINARY_COMPRESS_CHUNK (1 << 18) #else #define TERM_TO_BINARY_LOOP_FACTOR 1 -#define TERM_TO_BINARY_SIZE_FACTOR 10 #define TERM_TO_BINARY_COMPRESS_CHUNK 10 #endif @@ -1859,7 +1857,7 @@ static Eterm erts_term_to_binary_int(Process* p, Eterm Term, int level, Uint fla /* Finish in one go */ res = erts_term_to_binary_simple(p, Term, size, level, flags); - BUMP_REDS(p, size / TERM_TO_BINARY_SIZE_FACTOR); + BUMP_REDS(p, 1); return res; } |