The Benchmark Procedure Format - mulark/factorio-benchmark-helper GitHub Wiki

Benchmark procedures come in two variants:

Benchmark set

Metabenchmark set

Benchmark sets

The benchmark set format contains the following fields:

  • save_subdirectory - This is the folder under which the maps for this set will reside
  • mods - This is a set of mods that will be enabled when benchmarking this set
    • name - The name of the mod
    • file_name - The file name of the mod
    • version - The mod's version
    • sha1 - The sha1 hash of the mod (mod portal uses sha1)
  • maps - The set of saves which will be benchmarked with all mods defined.
    • name - The name of this save
    • sha256 - The sha256 of this save
    • download_link - Where this save can be downloaded from. Must be a direct download.
  • ticks - How many ticks should each run of all these maps be peformed
  • runs - How many times should each map be ran.

When you run a benchmark set, the mods and maps present in this set will be sourced. Mods will be fetched from the mod portal using your service-username and service-token present in your Factorio folder. Maps will be downloaded from the download link defined with them, or copied from your saves folder if there is a file with the same name and hash.

Meta sets

Meta sets are a list of strings that will recursively populate child meta and benchmark sets for a resultant collection of benchmark sets. You might want to use a meta set if you have two groups of mods you want to benchmark with the same set of maps.

Example: Suppose you have the following procedures:

benchmark_sets: {
    "benchmark_1",
    "benchmark_2",
    "benchmark_3",
}
meta_sets: {
    "meta_1": [
        "meta_2",
        "benchmark_1",
    ],
    "meta_2": [
        "benchmark_3",
    ]
}

If you then perform a benchmark of meta_1, you will benchmark the sets "benchmark_1" and "benchmark_3". Benchmark and meta sets can be named the same thing, however it's not recommended.