perf(core): FloatingIslands whole view 16.7 s -> 7.4 s (L51); research R20
Measured first: 45% of FI tiles are all-air, yet FloatingIslandFieldV1 returned unknown for any box near an island AABB (25,536 unknown boxes, 0 tile skips). Conservative ranges for island bodies, root lobes, buttresses, connectors, surface detail and smooth-min budgets now let the shared box classifier prove FI air/solid (216 tile skips; 28.6 M audited samples, 0 violations). The X8 path reuses its FI preflight samples. LOD7-8 far-shell and column work is skipped outside per-tile island/connector influence bounds (farHorizonVersion 4 -> 5). FI 16.74 -> 7.36 s (-56%), FI moving entering-tile p50 halved; SW unchanged. Peer determinism (Clang/GCC W1/W8/W12, random cameras) PASS; fast/medium/full PASS. Research R20: world-type catalogue and dreamcore/liminal concepts (revised after a deepening pass). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016dhxM43dnWvUu2B5Ph1iG1
This commit is contained in:
1 parent
ca85e876ad
commit
75550256ef
9 files changed
+793
-23
No files matched your search
@@ -4350,6 +4350,7 @@ namespace StandaloneStreamBenchmark
|
||||
RegionCompileWallSeconds,RegionCompileCpuSeconds,ParallelWorkers);
|
||||
}
|
||||
const auto MovingTileStart=Clock::now();
|
||||
const auto MovingSubmitStart=Clock::now();
|
||||
const auto MovingUpdate=Streamer.UpdateDesiredWithSet(MovedDesired,Desired.Tiles,1);
|
||||
std::array<std::uint64_t,9> MovingTilesByLOD{};
|
||||
std::array<double,9> MovingWorkerSecondsByLOD{};
|
||||
@@ -4365,6 +4366,8 @@ namespace StandaloneStreamBenchmark
|
||||
MovingMcInterpolationMsByLOD{},MovingMcDedupMsByLOD{},MovingMcOtherMsByLOD{};
|
||||
std::vector<FHashedTile> MovingDensityRows,MovingMeshRows,
|
||||
MovingPayloadRows,MovingTopologyRows;
|
||||
std::vector<double> MovingEnteringLatencyMs;
|
||||
MovingEnteringLatencyMs.reserve(static_cast<std::size_t>(std::max(0,MovingUpdate.NewJobs)));
|
||||
int32 MovingFinished=0;
|
||||
while(MovingFinished<MovingUpdate.NewJobs)
|
||||
{
|
||||
@@ -4374,6 +4377,8 @@ namespace StandaloneStreamBenchmark
|
||||
for(const FStandaloneCpuTile& Tile:Ready)
|
||||
{
|
||||
++MovingFinished;
|
||||
MovingEnteringLatencyMs.push_back(std::chrono::duration<double,std::milli>(
|
||||
Clock::now()-MovingSubmitStart).count());
|
||||
if(Tile.Key.Level>=0&&Tile.Key.Level<static_cast<int32>(MovingTilesByLOD.size()))
|
||||
{
|
||||
const std::size_t LOD=static_cast<std::size_t>(Tile.Key.Level);
|
||||
@@ -4431,6 +4436,18 @@ namespace StandaloneStreamBenchmark
|
||||
MovingFinished,MovingTileWallSeconds,
|
||||
std::accumulate(MovingWorkerSecondsByLOD.begin(),MovingWorkerSecondsByLOD.end(),0.0),
|
||||
RegionCompileWallSeconds,MovingWallSeconds);
|
||||
std::sort(MovingEnteringLatencyMs.begin(),MovingEnteringLatencyMs.end());
|
||||
const auto MovingLatencyPercentile=[&](double Percentile)
|
||||
{
|
||||
if(MovingEnteringLatencyMs.empty())return 0.0;
|
||||
const std::size_t Rank=static_cast<std::size_t>(std::ceil(
|
||||
Percentile*static_cast<double>(MovingEnteringLatencyMs.size())));
|
||||
return MovingEnteringLatencyMs[std::min(
|
||||
std::max<std::size_t>(1,Rank),MovingEnteringLatencyMs.size())-1];
|
||||
};
|
||||
std::printf("[MovingTileLatency] entering_tiles=%zu p50_ms=%.3f p95_ms=%.3f metric=submit_to_completion_observed\n",
|
||||
MovingEnteringLatencyMs.size(),MovingLatencyPercentile(0.50),
|
||||
MovingLatencyPercentile(0.95));
|
||||
if(bHashDensity)
|
||||
std::printf("[MovingTileHash] tiles=%d rows=(%zu,%zu,%zu,%zu) density=0x%016llx mesh=0x%016llx payload=0x%016llx topology=0x%016llx status=%s\n",
|
||||
MovingFinished,MovingDensityRows.size(),MovingMeshRows.size(),
|
||||
|
||||
Reference in new issue
Block a user