Apologies for spamming you with messages like, but I was curious to run a few additional smaller-scale experiments. I had a brief look through your Lua code to get some idea of how the specific splitter objects work. I have trouble tracking variable definition in Lua since the mechanics are so implicit, but I think I have a decent idea. You seem to be mapping all belt connections to all Belt Balancer objects to the same one object, then calculating input and output for it in Lua. The on_nth_tick calculation eludes me, however, but that's good enough to test.
I mentioned the possibility of using a "fake chest" so I figured I'd try an actual fake chest via the Modular Chests mod, and I threw in a test against Compound Splitters, as well. The results are as follows:
https://steamcommunity.com/sharedfiles/filedetails/?id=2156163044
This is a small-scale experiment so the numbers are comparably small. With 11 inputs and 12 outputs, Belt Balancer is consuming ~170ms (I think that's what that's measuring), Compound Splitters ~0.065 and the others aren't showing up. Crucially, neither Modular Chests nor Loaders Redux show up in the Lua readout, I presume because both hook into core game mechanics (chests and the pre-existing but disabled Loader mechanic) meaning they don't actually use Lua at all. Or if they do, it's not showing up in the read-out.
Belt Balancers output in a particular pattern when they can't compress. In this example, it looks like 1 6 5 4 3 7 8 9 10 11 12 2 in this particular example. Rebuilding the Belt Balancer array appears to change how the outputs are staggered. This seems consistent with the on_nth_tick calculation, though I admit to not fully understanding the design behind that. Compound Splitters output in a staggered line, left-to-right, or in this case from buffer to end cap. Swapping those two items around reverses the priority. Modular Chests don't appear to have any output priority, and just output from right to left regardless of what I do. This is likely more a function of how Loaders choose their own priority.
I think the point of this exercise was to test a pet theory of mine - that some system of invisible loaders and interconnected storage could be used to approximate what Belt Balancers do. That doesn't seem to be the case. While it works mechanically, no balancing is achieved. So that's not an option. At this point, I don't think I can make any real optimisation suggestions. However, it does seem like Belt Balancer does a fairly complex calculation to determine which item is deposited to which belt. Could they perhaps be stored in some specific order and always output in that order as long as items existing the invisible buffer? Belt Balancer output order changes depending on when compression is lost, and this seems consistent with what I can see in the Lua. I think that calculation could be simplified in return for a loss of complexity of operation.
Then again, I could be entirely wrong :)