Create

Create

86M Downloads

Brass Funnel Filter Index Eats Performance When Used On Multiple Items

Robert-DeForrest-Reynolds opened this issue ยท 2 comments

commented

I'm very unfamiliar with Java, or I'd try to help find out what's going on exactly better, and how to fix it. I barely know my way around Gradle, let alone anything further. I use Python and C. I gave it a shot though on how to solve it. I could also be entirely wrong about my analysis of how Create handles filters, feel free to roast me if so.

I have a private server, with very little on it. I have though a machine that uses Portable Storage Interfaces into Brass Funnels to extract 64 at a time from a harvesting machine. Mystical Agriculture is in this particular server as well, so there are a lot of separate items, and separate stacks within the inventory of the harvester. It seems that the Brass Funnel makes an individual index to each inventory as though it was separate on the contraption, and indexes each item to determine whether or not it is equal 64. So in this case, if I had 20 different kinds of plants being harvested, and multiple stacks of each plant being harvested, it indexes each stack, even if it's the same item, as the max stack size in a chest is 64.

I think making it so that a contraption when initialized, unifies it's inventory into a singular inventory base, and caches it, so that filters can index from them in a healthier manner. Instead of indexing each stack separate, dealing with duplicate items, and stacks that don't reach the filtered amount, you index each stack only separated by different items.
Example: instead of a chest with 3 stacks of wheat, 4 stacks of carrots, and 3 stacks of potatoes indexing each stack, resulting in 10 different indexes on if the stacks reaches 64, you unify the inventory into 192 wheat, 256 carrots, and 192 potatoes, and index up until they reach lower then the filter, in this case 63. You'll still need to index for the contraption to remove items from the inventory, but you can do this in the background. The problem is that when indexing so heavily in this case, it will force a huge spike in performance consistently, as the portable storage interface has to check to move, and this is usually automated, as that is it's purpose. You can do the index for removal of items while the contraption is moving, whilst it's still activated, or just use caches or a serializing technique to 'instantly' update them.

commented

This issue has been marked as stale because it has been inactive for 3 weeks. It will be closed if it remains inactive for another 3 weeks.

commented

This issue has been closed since it has been inactive for 3 weeks since it was marked as stale.