O(nlogn) is probably reasonable. Why break up a long function then if you are experiencing O(nlogn) scaling of compile time on function size?
Because it can still result in compile times I find excessive.
For example breaking up a function that takes 5 seconds to compile into a bunch of functions that take 1 to 2 seconds in total.