BLESS

system

t--:--:--

grid--

// nonfiction ⁄ blessed_skyrim ⁄ print 015 ⁄ 2026.10.03

bs bench

every blessed skyrim benchmark run behind past native, 2,370 of them.

// bench [088 campaigns]

raw bench behind past native, my optimizations for skyrim special edition. 80 campaigns over five days, c1 to c80. c57 & c63 ran in parts, three had side runs so the data lists 88. most ran native dx11, same sitting, so the fork’s paired against it. the fork starts fairly dismally, ngl

click a campaign to see what it ran. failed runs stay in w the gate that failed them.

// the climb in five marks [fork vs native]

  1. c4 the pit, features off −61.53% fork 86.1 · native 223.7 fps
  2. c10 the morning after, full stack −37.11% fork 139.2 · native 221.3 fps
  3. c53 the tie, then corrected −0.09% fork 219.1 · native 219.3 fps
  4. c58 first paired win +1.23% fork 221.5 · native 219.2 fps
  5. c76 published, paired +10.97% fork 242.2 · native 218.1 fps

medians without the warm-up, as on the climb. c58 and c76 are paired, as published. open a mark to see its runs.

// runs [2,370]

ok2,144

failed226

campaigns88

outside a campaign424

// c76 [checked at build]

whiterun 218.1 → 242.2 fps

the flight 239.8 → 250.7 fps

whiterun 9.81 → 4.61 display ms

the flight 12.42 → 4.73 display ms

whiterun +10.97% paired, the headline

the flight +4.37% paired, the headline

// the climb [fork vs native]

  • fork, ahead of native
  • fork, behind native
  • stock dxvk
  • native, the zero line
  • best fork in each campaign
  • no native to compare

a dot is one configuration's median fps, set against the native median of the same campaign, scene, settings and mods. the first repeat of every campaign is a warm-up and is left out. the published numbers were made the same way.

24 campaigns ran without native, and 7 more kept no native run past the warm-up. they have no dots. they stand as ticks under the axis, and their runs open in the drawer like the others.

a dot is a ratio of two medians. the headline percentages are paired: each fork run against the native run of the same repeat, then averaged. so a dot can sit a little off its headline. c76 in whiterun is +11.04% as a dot and +10.97% paired, shown in the c76 box.

early campaigns ran at a 60 fps cap, and a few ran at low settings and 720p. each dot compares only inside its own campaign. past native quotes c4 as the mean of all three runs, warm-up included: native 222.7, stock dxvk 163.5, the fork 85.4, the full ray-traced stack 65.8. by this page's rule, medians without the warm-up, they are 223.7, 165.4, 86.1 and 69.1.

// runs

pick a campaign on the climb or in the list below, and its runs unfold here.

the runs open with javascript. with it off, the csv on github has every one.

// campaigns [088]

every campaign in the order it ran. the best column is the best fork configuration against native, warm-up left out.

# campaign plan first run, utc runs failed best fork
001 c1 whiterun-save 09-23 06:23 15 · +0.3%
002 c2 rt-shadows 09-23 08:05 9 · no comparison
003 c3 blessed-stack 09-23 09:25 9 1 +0.3%
004 c4 uncapped 09-23 09:56 15 · −61.5%
005 c5 fork-cpu 09-23 10:17 9 · no comparison
006 c6 probe-gi 09-23 10:32 18 · no comparison
007 c7 uncapped-2 09-23 11:54 12 · −38.2%
008 c8 uncapped-2 09-23 12:17 20 · −29.4%
009 c9 uncapped-2 09-23 12:50 20 · −31.2%
010 c10 uncapped-2 09-23 13:21 20 · −31.6%
011 c11 fork-gap 09-23 13:49 15 · no comparison
012 c12 compiler 09-23 14:08 15 · no comparison
013 c13 zero-cost 09-23 15:01 15 · no comparison
014 c14 noprobe 09-23 15:20 15 · no comparison
015 c15 layered-ab 09-23 18:52 12 · −48.9%
016 c16 layered-ab 09-23 19:12 12 · +6.2%
017 c17 layered-ab 09-23 19:33 15 · −29.9%
018 c18 layered-ab 09-23 19:54 15 · −30.1%
019 c19 perf-parts 09-23 21:02 12 6 no comparison
020 c20 cache-ab 09-23 21:31 12 · no comparison
021 c21 cpu-bound 09-23 22:07 12 · +2.6%
022 c22 alloc-ab 09-23 22:56 6 · no comparison
023 c23 perf-vs-native 09-23 23:53 30 · +0.5%
024 c24 critical-levers 09-24 02:03 18 · −3.9%
025 c25 engine-switches 09-24 02:43 36 1 no comparison
026 c26 checks-evening 09-24 05:21 6 2 no comparison
027 c27 crash-hunt 09-24 05:39 12 · no comparison
028 c28 critical-2 09-24 06:03 18 1 −3.9%
029 c29 new-scenes 09-24 06:58 6 1 −14.1%
030 c30 engine-fixes 09-24 07:45 12 · no comparison
031 c31 critical-3 09-24 08:21 14 1 no comparison
032 c32 pinning 09-24 09:10 30 2 no comparison
033 c33 frame-timer 09-24 10:24 12 1 +4.4%
034 c34 critical-3 09-24 19:48 27 3 −5.3%
035 c38 fe-hunt 09-24 20:53 6 6 no comparison
036 c39 fe-hunt-2 09-24 23:05 24 · no comparison
037 c40 water 09-24 23:49 12 1 no comparison
038 c35 fly 09-25 00:16 15 4 −7.7%
039 c36 frame-timer 09-25 00:47 12 · +2.3%
040 c37 critical-3 09-25 01:14 27 · −5.0%
041 c41 fly 09-25 01:28 15 · −9.6%
042 c42 water 09-25 02:05 12 · no comparison
043 c43 load-hunt 09-25 02:34 32 5 no comparison
044 c44 load-hunt 09-25 04:37 32 · no comparison
045 c45 cache-4 09-25 05:42 15 · −4.2%
046 c46p cs-prime 09-25 06:21 4 3 no comparison
047 c46 cs-compare 09-25 06:31 30 12 −1.1%
048 c47 unmeasured-levers 09-25 08:03 18 3 −3.3%
049 c48 passes-bit8 09-25 08:44 4 · −0.6%
050 c49 dxvk-conf-sweep 09-25 08:55 27 · no comparison
051 c50 midframe-split 09-25 09:57 33 · no comparison
052 c51 unmeasured-levers-2 09-25 20:07 12 · no comparison
053 c52 cb-mirror 09-25 20:36 9 · −0.7%
054 c53 mirror-confirm 09-25 20:56 30 · −0.1%
055 c54 passes-scenes 09-25 22:05 8 · +4.4%
056 c55 vb-rebar 09-25 22:52 18 · −0.1%
057 c56 strict-screen 09-26 01:24 15 · +0.4%
058 c57-hagsoff hags-ab 09-26 02:19 30 · −2.2%
059 c57-hagson hags-ab 09-26 05:36 30 · +0.4%
060 c58 primed 09-26 06:57 66 11 +1.1%
061 c59 c59 09-26 10:23 88 · +1.6%
062 c60 passes-c60 09-26 13:55 8 · +1.1%
063 c61 c61-volgen 09-26 14:58 54 · +2.2%
064 c62 c62-fe-shadow 09-26 17:30 60 · +2.9%
065 c63-bit8a c63-flags 09-26 22:18 8 8 no comparison
066 c63-bit8b c63-flags 09-26 23:18 8 · +4.3%
067 c63-f803a5 c63-flags 09-26 23:48 8 · +5.3%
068 c63-f802a5 c63-flags 09-27 00:11 8 · +2.1%
069 c63-bit8c c63-flags 09-27 00:32 8 · +4.6%
070 c64 c64-async 09-27 01:00 40 5 +3.2%
071 c65 c65-confirm 09-27 03:30 27 5 +5.7%
072 c66 c66-fbcopy 09-27 05:11 60 · +3.2%
073 c67 c67-zerocopy 09-27 07:32 60 · +1.6%
074 c68 c68-passes 09-27 09:52 6 1 no comparison
075 c69 c69-owed 09-27 10:22 8 · +7.9%
076 c70 c70-fpe 09-27 11:00 60 · +3.7%
077 c71 c71-cube-img4 09-27 13:41 42 · −1.3%
078 c72 c72-unified 09-27 15:52 30 · −1.1%
079 c73 c73-reflect 09-27 18:31 18 · +1.3%
080 c74 c74-temporal 09-27 19:33 60 · +9.6%
081 c75 c75-sundeg 09-27 22:48 36 · +11.2%
082 c76 c76-final 09-28 00:29 48 · +11.0%
083 c77 c77-mods 09-28 03:05 48 · +12.7%
084 c78s c78-smoke 09-28 05:05 4 2 no comparison
085 c78 c78-mods 09-28 05:28 3 · no comparison
086 c79s c79-smoke 09-28 07:01 2 · no comparison
087 c79 c79-mods 09-28 07:06 48 1 +16.6%
088 c80 c80-ladder 09-28 09:04 36 · +12.3%
··· loose runs outside any campaign 09-23 03:25 424 140 no comparison

// data

runs.csv2,370

what each column meansreadme

every run is in the csv, failed ones too.