119 lines
7.3 KiB
Markdown
119 lines
7.3 KiB
Markdown
# Core performance comparison
|
||
|
||
`core-performance` adds the pinned core performance mods while retaining the
|
||
baseline's 12 full-detail chunks, 12 simulation chunks, suggested heap, custom
|
||
graphics preset and OpenGL backend. Neither profile installs distant terrain or
|
||
Iris shaders; every original experimental controller is disabled. Use this pair
|
||
for the first comparison at the same view distance, then test balanced separately
|
||
for its additional 128-chunk distant horizon.
|
||
|
||
The loaded-mod report also exposes dependencies bundled inside those downloads,
|
||
such as Transition and Trender in this observed core run. The comparator treats
|
||
these software changes as explicit experiment variables. Matching configuration
|
||
is not proof of pixel-identical rendering or exhaustive gameplay equivalence.
|
||
|
||
## Three repeated pairs on 0.20.0
|
||
|
||
The later series uses the exact published 0.20.0 mod with fresh JVMs and identical
|
||
initial private world copies. Each run warms for 180 seconds in focused gameplay,
|
||
then records frames and integrated-server ticks for 120 seconds. A separate test
|
||
fixture in both profiles holds the same stationary camera. It is absent from
|
||
playable packs. The workload remains 12 full-detail / 12 simulation chunks,
|
||
1280×800, FOV 70, no LOD/shaders, G1, compact headers and a 3 GiB maximum heap.
|
||
Private copies use Peaceful difficulty and a fixed noon clock/weather; distributed
|
||
packs retain normal rules. All original experimental controllers are disabled.
|
||
|
||
| Pair | Baseline FPS | Core FPS | Baseline peak RSS | Core peak RSS | Baseline CPU | Core CPU |
|
||
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
|
||
| 1 | 5.39 | 6.53 | 2,310.68 MiB | 2,043.46 MiB | 2.931 cores | 2.898 cores |
|
||
| 2 | 5.55 | 6.32 | 2,572.06 MiB | 2,031.07 MiB | 2.928 cores | 2.981 cores |
|
||
| 3 | 5.39 | 6.52 | 2,172.38 MiB | 2,121.73 MiB | 2.942 cores | 2.950 cores |
|
||
|
||
Paired average-FPS changes are **+21.28%, +14.00%, +20.96%**. Their arithmetic
|
||
mean is +18.75%; this is a descriptive average of three changes, not a pooled
|
||
frame estimate or a statistical significance claim. The slowest-1%-average rate
|
||
is higher in all pairs, while p95 frame intervals are 8.43–21.25% lower. Peak
|
||
sampled RSS changes are **−11.56%, −21.03%, −2.33%**. Memory varies substantially
|
||
across fresh processes, so the earlier single pair's 22% reduction is not a
|
||
stable memory-saving estimate.
|
||
|
||
Average process CPU changes are −1.11%, +1.81%, +0.30%: there is no consistent
|
||
absolute CPU reduction while rendering more frames. Peak sampled JVM heap is
|
||
slightly higher in the third core run. GC accounting time is 113→92 ms, 57→154 ms
|
||
and 157→96 ms across the three pairs, so it is mixed too. These are collector
|
||
MXBean totals, not JFR stop-the-world pause measurements; no JFR profiling runs
|
||
alongside these captures.
|
||
|
||
Every accepted run has nonempty frame/tick CSVs with verified counts and mean
|
||
durations, zero excluded frames or dropped samples, matching captured settings
|
||
and no visual-setting changes. Sampled tick-manager state remains normal at
|
||
20 configured TPS with no observed freeze, step, sprint or rate changes. Observed
|
||
invocation throughput ranges from 19.997 to 20.006 TPS; mean tick execution time
|
||
is 26.43–32.91% lower with core. This stationary integrated-server workload does
|
||
not establish capacity for a populated dedicated server. Saved cameras, positions,
|
||
clock/rules and clean process exits are checked for every run. All three real
|
||
JSON/CSV pairs pass desktop/mobile comparison and chart checks.
|
||
|
||
The original third-pair candidate lost focus when the headless input tool's
|
||
single long sleep overflowed and its keyboard disappeared. Its 448 eligible
|
||
frames, 211 excluded frame starts and 1,391 measured ticks over about 120 seconds
|
||
are excluded. The preceding valid baseline is retained separately as unpaired
|
||
data. The complete third pair was repeated from fresh copies after replacing
|
||
the long sleep with several shorter sleeps in one persistent process and adding
|
||
an input-process liveness check. Neither excluded attempt enters the summary.
|
||
|
||
The [selected repeated observations](../benchmarks/core-client-repeats-2026-10-04/live-observations.json)
|
||
include all six accepted runs, the excluded attempts, each pair's comparison,
|
||
loaded mod identities and private capture/fixture hashes. This is still one
|
||
stationary view on an i7-7500U Linux **llvmpipe software renderer**. Baseline is
|
||
always first within each pair. OS cache, JIT, entity activity and thermal effects
|
||
remain uncontrolled variables. Three pairs do not prove a universal improvement;
|
||
Apple Silicon/native GPU performance, movement and terrain generation remain to
|
||
be measured. See the [Mac first-test guide](mac-first-test.md) for a matched-view
|
||
comparison on the user's hardware.
|
||
|
||
## Earlier single pair on 0.19.0
|
||
|
||
The selected 4 October 2026 live observations use separate private world copies,
|
||
a stationary camera, native Linux x64 Java 25, G1, compact headers and the same
|
||
3 GiB maximum heap. The test copies use Peaceful difficulty and a noon clock with
|
||
weather/time advancement disabled to reduce lighting variation. Distributed packs
|
||
do not change world rules. First saved cameras and saved clock/rules are checked.
|
||
JFR begins roughly 121 seconds after demo dismissal; a separate 120-second frame
|
||
capture begins roughly 307 seconds after dismissal.
|
||
|
||
| Observation | Vanilla baseline | Core mods |
|
||
| --- | ---: | ---: |
|
||
| Eligible frames | 651 | 785 |
|
||
| Average frame rate | 5.44 FPS | 6.56 FPS |
|
||
| 95th-percentile frame interval | 194.89 ms | 163.18 ms |
|
||
| Sampled peak process RSS | 2,710.76 MiB | 2,108.96 MiB |
|
||
| Average process CPU | 2.81 cores | 2.88 cores |
|
||
| Tick execution mean | 8.98 ms | 6.37 ms |
|
||
| Recorded tick samples | 2,401 | 2,402 |
|
||
|
||
In this single fixed-order, software-rendered pair, average FPS is about 20.7%
|
||
higher and sampled peak RSS about 22.2% lower with the core stack. Process CPU is
|
||
slightly higher while more frames are rendered. Tick execution durations are
|
||
lower; their inverse is execution capacity, not observed TPS. Both captures span
|
||
about 120 seconds and record approximately 20 tick samples per elapsed second.
|
||
These are descriptive observations, not a statistical or universal speedup claim.
|
||
They do not isolate which mod caused a difference. Entity activity, completion
|
||
of rendering work, cache/JIT and thermal state remain possible variables. RSS
|
||
excludes a complete GPU/unified-memory measurement; Apple Silicon performance
|
||
remains unmeasured. Hardware graphics measurements remain needed; the separate repeated series above
|
||
uses a different warm-up protocol and must not be pooled with this pair.
|
||
|
||
Preceding JFR counter rates for the server and render thread are lower with the
|
||
core stack, but total and longest measured GC pauses are higher in that profile.
|
||
Those recordings precede the frame captures, so rates/pauses must not be treated
|
||
as if they covered the later frame interval. Selected observations retain both
|
||
findings instead of presenting only favorable measurements.
|
||
|
||
The [selected raw observations](../benchmarks/core-client-2026-10-04/live-observations.json)
|
||
retain software identity, protocol and both positive and negative measurements.
|
||
Both clients save and exit with code zero; the core world reloads and saves again.
|
||
Actual JSON/CSV viewer and mobile checks pass. Windows, macOS ARM and Linux builds
|
||
pass, with byte-identical local and independent Linux production JARs. These are
|
||
platform build checks, not game graphics tests on each platform.
|