Issue description
I have seen issues in the past concerning the lag of pipes, but they're all closed. I believe there still is a need for a refactor of how pipes are pathfinding, seeing as, from how i'm reading LogisticalTransporterBase.onUpdateServer, each pipe unit is trying to find a valid direction to walk in. This is awful for performance, especially when this is done per tick.
Valid paths between nodes on the network should be calculated upon a change of the whole network, and cached in the network. The network should be responsible for sending items between the nodes, since it knows what paths to combine. If any block is changed adjacent to the network, of course, the whole network must be recalculated: but this scales much better than attempting to do this per server tick.
Furthermore, something should be done to handle congestion on a network. You would think ultimate pipes are actually able to handle sending several stacks of items per operation. Pipes should not accept items if congestion is too high on the network: see https://dl.acm.org/doi/pdf/10.1145/52325.52356 for an example implementation to avoid congestion dynamically, or just hardcap it (this would be detrimental to parallel routes on the same network).
Steps to reproduce
Initially, I had a filled a large field of hopper botany pots, and used Ultimate Logistical Transporters to pipe their output into a drawer. The lag was unbearable. I then decided to streamline all the connectors so there would be no circular pathfinding issues, which didn't seem to help either. I then set the direction of each row of hoppers to only push into the main bus at the end of the row, which didn't help either (related: there's no visual cue to highlight direction of allowed traffic, and the configurator is annoying to use: ideally you'd be able to set its mode to "connect/disconnect pipes", "change colour", "change push/pull direction" to facilitate doing this at large).

I can see my items flickering back and forth on the transparency of the block, which isn't causing any clientside fps lag, but the server's TPS is drowned. Is there anything I can do to make these pipes actually usable?
The alternative now is to "just use another mod": LaserIO, Modular Routers, Ender Chests, EnderIO, PrettyPipes, Integrated Dynamics, Integrated Tunnels; but this doesn't fix the issues in this mod.
Versions
I am playing on ATM9 0.2.39.
Minecraft 1.20.1
Forge 1.20.1-47.2.19
Mekanism 1.20.1-10.4.5.19
Issue description
I have seen issues in the past concerning the lag of pipes, but they're all closed. I believe there still is a need for a refactor of how pipes are pathfinding, seeing as, from how i'm reading LogisticalTransporterBase.onUpdateServer, each pipe unit is trying to find a valid direction to walk in. This is awful for performance, especially when this is done per tick.
Valid paths between nodes on the network should be calculated upon a change of the whole network, and cached in the network. The network should be responsible for sending items between the nodes, since it knows what paths to combine. If any block is changed adjacent to the network, of course, the whole network must be recalculated: but this scales much better than attempting to do this per server tick.
Furthermore, something should be done to handle congestion on a network. You would think ultimate pipes are actually able to handle sending several stacks of items per operation. Pipes should not accept items if congestion is too high on the network: see https://dl.acm.org/doi/pdf/10.1145/52325.52356 for an example implementation to avoid congestion dynamically, or just hardcap it (this would be detrimental to parallel routes on the same network).
Steps to reproduce
Initially, I had a filled a large field of hopper botany pots, and used Ultimate Logistical Transporters to pipe their output into a drawer. The lag was unbearable. I then decided to streamline all the connectors so there would be no circular pathfinding issues, which didn't seem to help either. I then set the direction of each row of hoppers to only push into the main bus at the end of the row, which didn't help either (related: there's no visual cue to highlight direction of allowed traffic, and the configurator is annoying to use: ideally you'd be able to set its mode to "connect/disconnect pipes", "change colour", "change push/pull direction" to facilitate doing this at large).
I can see my items flickering back and forth on the transparency of the block, which isn't causing any clientside fps lag, but the server's TPS is drowned. Is there anything I can do to make these pipes actually usable?
The alternative now is to "just use another mod": LaserIO, Modular Routers, Ender Chests, EnderIO, PrettyPipes, Integrated Dynamics, Integrated Tunnels; but this doesn't fix the issues in this mod.
Versions
I am playing on ATM9 0.2.39.
Minecraft 1.20.1
Forge 1.20.1-47.2.19
Mekanism 1.20.1-10.4.5.19