Something went wrong. Try again.
Small (but incredibly useful!) scripts and utilities that don't need their own repo.
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869#!/usr/bin/env nu# SPDX-License-Identifier: AGPL-3.0-only# Copyright (c) 2025 MatrixFurry <matrix@matrixfurry.com>
use std/loguse std/assert
# Set up and run a Blender benchmark on the specified device, then automatically# compare your results to the results on [Blender Open Data](https://opendata.blender.org/).export def main [ --debug: string # NUON] { log info "Getting latest version" let version = benchmark-launcher-cli blender list | parse "{version}\t{download_size}" | get 0.version
log info "Getting latest scenes" let scenes = benchmark-launcher-cli scenes list --blender-version=($version) | parse "{name}\t{download_size}" | get name
log info "Selecting device" let device = benchmark-launcher-cli devices --blender-version=($version) | parse "{device}\t{type}" | each {|e| $e.type + ": " + $e.device} | input list "Choose a device to benchmark" | split row ": " | {name: $in.1, type: $in.0}
log info "Starting benchmark" let results = if $debug != null {$debug | from nuon} else { benchmark-launcher-cli benchmark ...$scenes --blender-version=($version) --device-type=($device.type) --device-name=($device.name) --json | from json } log info "Done!"
let sum = $results.stats.samples_per_minute | math sum # HACK: It doesn't look like open data has a normal API so we have to do a bit of a workaround let opendata = http get $"https://opendata.blender.org/benchmarks/query/?device_name=($device.name)&blender_version=($version)&response_type=datatables" | $"[($in.columns.display_name | to nuon); ($in.rows | to nuon | str substring 1..-2)]" | from nuon let opendata_median = $opendata | get 'Median Score' | math median let diff = $sum - $opendata_median
log debug "" log debug $"Blender Version: ($version)" log debug $"Benchmark Launcher Version: ($results.0.benchmark_launcher.label)" log debug $"Benchmark Script Version: ($results.0.benchmark_script.label)" log debug $"Device: ($device.name)" log debug $"Scenes: ($scenes | str join ', ')" log info "" log info "Results:" $results | each {|result| log debug $"-> ($result.scene.label): (ansi blue)($result.stats.samples_per_minute)(ansi reset) samples/min" } log info $"-> Total: (ansi blue)($sum)(ansi reset) samples/min" log info $"-> Open Data: (ansi blue)($opendata_median)(ansi reset) samples/min" log info $"-> Delta: ( if $diff < 0 { (ansi red) } else if $diff == 0 { (ansi grey) + "±" } else { (ansi green) + "+" } )($diff)(ansi reset) samples/min"}