-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
perfThis issue is about improving performance of the implementation in generalThis issue is about improving performance of the implementation in general
Description
With the current implementation we have assert(3 <= list.length && list.length <= 12) in src/0-core/concatenate/nodes.js.
Plan:
- Write tests that cover all cases in
nodes(fromlist.length = 3tolist.length = 12) 38b9e05 - Write a benchmark that stresses the
concatmethod - Profile current implementation
- If any of
nodes,_app3,app3shows up as a bottleneck, profile these implementations:- unroll loop iterations in
nodes(max iterations is fixed) - switch on
list.lengthinnodes7362602 - handle all cases separately as Digit methods and remove
nodes: First implicit branch on the protototype ofB, then implicit branch on the prototype ofA(e.g.A._nodes_from_list_and_Two(list, B)whereB instanceof Two), and finally explicit branch onlist.lengthusing aswitch
- unroll loop iterations in
Also the current base cases in app3 use the generic _append and _prepend where list has a size between 1 and 4.
- Explore unrolling these generic loops in those cases.
Metadata
Metadata
Assignees
Labels
perfThis issue is about improving performance of the implementation in generalThis issue is about improving performance of the implementation in general