SKSE/SKSEVR plugin that profiles Skyrim's startup load time — measuring how long each ESP/ESM and SKSE DLL takes to load, with an in-game overlay and export to CSV, TXT, and Perfetto JSON.
- Per-plugin load time broken into three phases: file open, form load (ConstructObjectList), and file close
- Per-DLL timing across all SKSE messaging callbacks (PostLoad, DataLoaded, etc.)
- In-game overlay via SKSE Menu Framework
- Export to CSV, plain text, and Chrome Trace / Perfetto JSON (viewable at ui.perfetto.dev)
- VR-aware: integrates with SkyrimVRESL to import accurate VR plugin timings when present
- Configurable warn/critical thresholds with colour coding
- Search, filter by type, and sort in the overlay table
- SKSE or SKSEVR
- Address Library for SKSE — needed for SE/AE
- VR Address Library for SKSEVR — needed for VR
- SKSE Menu Framework — for the in-game overlay
- SkyrimVRESL (VR, optional) — enables accurate per-plugin timing on VR
- CMake — add to
PATH - Visual Studio Community 2022 with Desktop development with C++
- Vcpkg — set
VCPKG_ROOTenvironment variable to your vcpkg folder - CommonLibVR (
ngbranch) — bundled as a submodule; see Building
git clone https://github.com/Quantumyilmaz/SKSELoadTimeProfiler.git
cd SKSELoadTimeProfiler
git submodule update --init --recursive extern/CommonLibSSE
Open the folder in Visual Studio 2022 and select the Release (or Debug) CMake preset, then build.
For command line builds, activate the MSVC environment first:
"C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
cmake --preset release
cmake --build build/release --parallelIf using a user preset (e.g.
user-release), substitute that preset name and its corresponding build directory.
To override the compiler path or set environment variables per-machine, copy
CMakeUserPresets.template.jsontoCMakeUserPresets.json, fill in your paths, and select a User preset. This file is gitignored.
| Variable | Required | Description |
|---|---|---|
VCPKG_ROOT |
Yes | Path to your vcpkg clone |
COMMONLIB_SSE_FOLDER |
No | Fallback path to CommonLibVR if not using the submodule |
SKYRIM_DIRECT_FOLDER |
No | SE/AE Data/ folder — copies the DLL on build |
SKYRIM_VR_DIRECT_FOLDER |
No | VR Data/ folder — copies the DLL on build |
Copy CMakeUserPresets.template.json → CMakeUserPresets.json and fill in your paths. This file is gitignored.
Resolved automatically via vcpkg.json:
rapidjson, spdlog, xbyak, directxtk, rsm-binary-io, rapidcsv, fast-cpp-csv-parser, skse-mcp, skyrimvresl
GPL-3.0-or-later WITH Modding Exception AND GPL-3.0 Linking Exception (with Corresponding Source).
Specifically, the Modded Code is Skyrim (and its variants) and Modding Libraries include SKSE, CommonLib (and variants), and Windows.
See NOTICE for the full project licensing notice.
- Quantumyilmaz — author
- alandtse — core VR integration and JSON trace export foundation (PR #11), plus CommonLibVR and SkyrimVRESL
- Thiago099 — SKSE Menu Framework
- powerof3 — CLibUtil
- Ryan-rsm-McKenzie — CommonLibSSE