Skip to content

perf: Replace uses of genericLength with specialised length functions.

Matthew Pickering requested to merge wip/generic-length into master

genericLength is a recursive function and marked NOINLINE. It is not going to specialise. In profiles, it can be seen that 3% of total compilation time when computing bytecode is spend calling this non-specialised function.

In addition, we can simplify addListToSS to avoid traversing the input list twice and also allocating an intermediate list (after the call to reverse).

Overall these changes reduce the time spend in 'assembleBCOs' from 5.61s to 3.88s. Allocations drop from 8GB to 5.3G.

Fixes #25706 (closed)

Merge request reports

Loading