The Factorio Benchmark Website

test-000066 : Item voiding techniques part 1

Platform: linux-x86_64
Factorio Version: 2.0.60

The Question

Voiding items is necessary at various times. For example, Fulgora, producing quality ore, or removing byproducts.

Specifically for this test, we're looking at establishing basic guidelines to allow further exploration of this problem space.

This test may be updated in the future to cover additional designs.

Part 2 will look at more esoteric ways of voiding items, with greater attention on Fulgora for example.

The Test

The test consists of multiple different "building block" ways to void items. Each of these was scaled up to approximately the same voiding rate

Test was ran 1k ticks each, 3 times per map

Scenario Save Items voided/minute (each copy) Items voided/minute (save total) Image

Infinity chest (control)

infinity.cloned 7200 46,080,000

Recycler shuffle

The classic, insert into two recyclers facing each other

recycler.shuffle.cloned 7200 46,080,000

Recycler with bulk inserter handoff.

Instead of directly inserting, batching the item transfer between the recyclers

The uncommon quality is needed to keep up

recycler.unc.bulk.handoff.cloned 7200 46,080,000

Recycler with legendary stack inserter handoff.

Another variant on the previous, is it better to wait for 16 ready items?

recycler.leg.stack.handoff.cloned 7200 46,080,000

Dumping items into lava

Items take a while to drop into lava, so this is the first (and only) case where 7200/m is not achieved by a single unit

Dumping into lava creates smoke

This has two sub-variants, one that clones in such a way the paste mining drills can see the ore belonging to other rows, and one where they are better spaced and cannot.

lava.cloned.nomineroverlap ~2504 ~46,669,552

Landfill recycler shuffle

Instead of going straight to recyclers, go to make landfill first

landfill.recycler.shuffle.cloned 7200 46,080,000

Landfill recycler handoff

Does handoff become better/worse at lower craft rates?

landfill.recycler.bulk.handoff.cloned 7200 46,080,000

Landfill lava

Keeps up

landfill.recycler.shuffle.cloned 7200 46,080,000

The Data

Metric Description
Mean UPS Updates per second - higher is better
Mean Avg (ms) Average frame time - lower is better
Mean Min (ms) Minimum frame time - lower is better
Mean Max (ms) Maximum frame time - lower is better

Save Avg (ms) Min (ms) Max (ms) UPS Execution Time (ms) % Difference from base
lava.cloned 10.263 4.423 25.923 97 30789 0.00%
recycler.unc.bulk.handoff.cloned 8.900 3.891 16.254 112 26701 15.32%
lava.cloned.nomineroverlap 8.575 3.321 24.272 116 25724 19.69%
recycler.leg.stack.handoff.cloned 8.298 2.951 14.688 120 24892 23.67%
recycler.shuffle.cloned 5.703 1.640 12.645 175 17109 79.93%
landfill.recycler.bulk.handoff.cloned 3.743 0.695 11.205 267 11229 174.17%
landfill.lava.cloned 3.167 0.388 10.389 315 9500 224.03%
landfill.recycler.shuffle.cloned 3.101 0.432 11.792 322 9303 231.19%
infinity.cloned 2.507 0.372 8.462 398 7521 309.31%

All maps will be uploaded here.

Closing

Crafting landfill first was clearly better in all cases. Additionally, adding a handoff is clearly worse than just cross feeding the recyclers.

Having more ore than necessary under an affected miner is harmful for performance. This is mainly a consideration when preparing saves for benchmarking. Avoid cloning a single ore under a miner, but also avoid having different number of ores available for mining by the different designs. Region cloner version 3.1.0+ adds intelligence for /autoclone command to improve the default behavior here (manually selected areas can still result in bad behavior).