aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/src/ets.erl
diff options
context:
space:
mode:
authorRaimo Niskanen <[email protected]>2018-11-28 15:59:00 +0100
committerRaimo Niskanen <[email protected]>2019-01-14 17:18:18 +0100
commit63a7892d0fbcd6463a21ba54622e61cf4a935b64 (patch)
tree1b409874e3a34128fef38957693996074bd2be87 /lib/stdlib/src/ets.erl
parenta5c1cd352976d58577516c6d7b1db45c30f908ab (diff)
downloadotp-63a7892d0fbcd6463a21ba54622e61cf4a935b64.tar.gz
otp-63a7892d0fbcd6463a21ba54622e61cf4a935b64.tar.bz2
otp-63a7892d0fbcd6463a21ba54622e61cf4a935b64.zip
Optimize gen_statem engine loop
* Use synchronolus cancel_timer since that is more efficient than asynchronous when a process cancels its own timer * Restructure the state to have fewer fields by breaking out practically constant fields into a separate loop argument record #params{}, group state and data into one field and dito for timer fields * Optimize engine loop arguments for staying in the loop so the detour to sys:handle_system_message/6 will require packing/unpacking of the sys: state, and of the argument Parent * Avoid double reverse of event queue in many cases * Restructure the state transition to not have duplicate tracks for sys_debug and non-sys_debug cases * Shortcut the empty list case where possible * Loop unroll reversal of up to 2-element lists to avoid calling lists:reverse/2 since an external call spills all live registers to the stack * Bring out the callback mode check to the engine loop
Diffstat (limited to 'lib/stdlib/src/ets.erl')
0 files changed, 0 insertions, 0 deletions