Merge pull request #16303 from e-kayrakli/refactor-writef
Refactor the param loop in writef
Move the code inside the arg-processing param loop in writef in a separate
Prior to this PR, we had a very large param loop inside writef. The main problem
with that is that writef is a vararg function, and for each call to writef with
different permutation of types, we create a separate instantiation and for all
of them we unroll a large param loop. This increases the generated code size
significantly if the application is using string/bytes formatting heavily.
Arkouda is one example application.
This PR changes the generated code size in Arkouda as follows (default Arkouda
|version||lines of C code|
On XC, with default settings, this shaves off more than 4 minutes in Arkouda
|version||time (s)||time (m)|
|PR (after @mppf’s suggestion)||763.251||12.72|
where we realized this issue.
- [x] standard
- [x] gasnet