Commit before trying IntMap instead of vector for incidence graph

This commit is contained in:
2025-10-26 08:31:54 +00:00
parent 61910785c4
commit b8536e2929
7 changed files with 369291 additions and 187170 deletions
+40 -40
View File
@@ -1,42 +1,42 @@
X_RANGE 11.44
Y_RANGE 23375816.00
X_RANGE 23.19
Y_RANGE 14888520.00
ORDER OTHER 1
ORDER (144633)ix/updateEdge/updateEdgeWallObs/updateEdgesWall'/updateEdgesWall/updateDoors/functionalUpdate/ti... 2
ORDER (145601)#..\/#./mcApplyDamage/updateMachine/dimap/dimap/_Wrapped'/updateIMl'/functionalUpdate/timeFlowUp... 3
ORDER (143309)ix/#..\/#./updateExpBarrel/updateBarreloid.\/updateBarreloid/updateCreature'/updateCreature/dima... 4
ORDER (143235)ix/#..\/#./performActions/updateCreature'.\/updateCreature'/updateCreature/dimap/dimap/_Wrapped'... 5
ORDER (143228)#..\/#./targetYouWhenCognizant/chaseCritInternal/ix/updateCreature'.\/updateCreature'/updateCrea... 6
ORDER (142970)updatePastWorlds/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateUniverse/updateRenderSp... 7
ORDER (144491)ix.\/ix/#..\/#./moveWall/moveWallID/ifoldl'/doorLerp.f/doorLerp/updateDoor/updateDoors/functiona... 8
ORDER (138431)zoneIncPe.f/zoneIncPe/#..\/#./generateLevelFromRoomList/generateWorldFromSeed/startSeedGameConc/... 9
ORDER (144689)ix/crCrSpring/crSpring/simpleCrSprings/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateU... 10
ORDER (144506)moveWall.newwl/moveWall/moveWallID/ifoldl'/doorLerp.f/doorLerp/updateDoor/updateDoors/functional... 11
ORDER (143210)chaseCritAwarenessUpdate/chaseCritPerceptionUpdate/chainCreatureUpdates.unf/chainCreatureUpdates... 12
ORDER (144622)ix/getNodePos/updateEdgeWallObs/updateEdgesWall'/updateEdgesWall/updateDoors/functionalUpdate/ti... 13
ORDER (144511)each/#..\/#./taintedDot/each/doorLerp.wlposs/doorLerp.f/doorLerp/updateDoor/updateDoors/function... 14
ORDER (144740)colCrsWalls/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateUniverse/updateRenderSplit/t... 15
ORDER (143289)ix/checkDeath'.tocr/#..\/#./checkDeath'/checkDeath/crUpdate/updateCreature'.\/updateCreature'/up... 16
ORDER (144620)updateEdgeWallObs/updateEdgesWall'/updateEdgesWall/updateDoors/functionalUpdate/timeFlowUpdate/u... 17
ORDER (142987)#..\/#./zoneCreatures/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateUniverse/updateRen... 18
ORDER (156022)listSelectionColorPicture.g/listSelectionColorPicture/updateSection.(...)/updateSection/updateSe... 19
ORDER (144644)primitive/basicUnsafeCopy/ix.\/ix/updateEdge/updateEdgeWallObs/updateEdgesWall'/updateEdgesWall/... 20
ORDER (143425)#..\/#./rememberSounds/chaseCritPerceptionUpdate/chainCreatureUpdates.unf/chainCreatureUpdates/c... 2
ORDER (143174)updatePastWorlds/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateUniverse/updateRenderSp... 3
ORDER (143513)ix/#..\/#./updateExpBarrel/updateBarreloid.\/updateBarreloid/updateCreature'/updateCreature/dima... 4
ORDER (146310)#..\/#./mcApplyDamage/updateMachine/dimap/dimap/_Wrapped'/updateIMl'/functionalUpdate/timeFlowUp... 5
ORDER (143439)ix/#..\/#./performActions/updateCreature'.\/updateCreature'/updateCreature/dimap/dimap/_Wrapped'... 6
ORDER (143432)#..\/#./targetYouWhenCognizant/chaseCritInternal/ix/updateCreature'.\/updateCreature'/updateCrea... 7
ORDER (144727)ix.\/ix/#..\/#./moveWall/moveWallID/ifoldl'/doorLerp.f/doorLerp/updateDoor/updateDoors/functiona... 8
ORDER (149438)#..\/#./untaintedDot/each/_1/doDoorMount.\/doDoorMount/doorLerp.domounts/doorLerp/updateDoor/upd... 9
ORDER (138578)zoneIncPe.f/zoneIncPe/#..\/#./generateLevelFromRoomList/generateWorldFromSeed/startSeedGameConc/... 10
ORDER (144742)moveWall.newwl/moveWall/moveWallID/ifoldl'/doorLerp.f/doorLerp/updateDoor/updateDoors/functional... 11
ORDER (145015)ix/crCrSpring/crSpring/simpleCrSprings/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateU... 12
ORDER (143414)chaseCritAwarenessUpdate/chaseCritPerceptionUpdate/chainCreatureUpdates.unf/chainCreatureUpdates... 13
ORDER (144747)each/#..\/#./taintedDot/each/doorLerp.wlposs/doorLerp.f/doorLerp/updateDoor/updateDoors/function... 14
ORDER (145066)colCrsWalls/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateUniverse/updateRenderSplit/t... 15
ORDER (144970)primitive/basicUnsafeCopy/ix.\/ix/updateEdge/updateEdgeWallObs/updateEdgesWall'/updateEdgesWall/... 16
ORDER (143493)ix/checkDeath'.tocr/#..\/#./checkDeath'/checkDeath/crUpdate/updateCreature'.\/updateCreature'/up... 17
ORDER (144815)each/_1/doDoorMount.\/doDoorMount/doorLerp.domounts/doorLerp/updateDoor/updateDoors/functionalUp... 18
ORDER (143191)#..\/#./zoneCreatures/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateUniverse/updateRen... 19
ORDER (149444)_xy/#..\/#./untaintedDot/each/_1/doDoorMount.\/doDoorMount/doorLerp.domounts/doorLerp/updateDoor... 20
SHADE OTHER 0.00
SHADE (144633)ix/updateEdge/updateEdgeWallObs/updateEdgesWall'/updateEdgesWall/updateDoors/functionalUpdate/ti... 0.00
SHADE (145601)#..\/#./mcApplyDamage/updateMachine/dimap/dimap/_Wrapped'/updateIMl'/functionalUpdate/timeFlowUp... 0.00
SHADE (143309)ix/#..\/#./updateExpBarrel/updateBarreloid.\/updateBarreloid/updateCreature'/updateCreature/dima... 0.00
SHADE (143235)ix/#..\/#./performActions/updateCreature'.\/updateCreature'/updateCreature/dimap/dimap/_Wrapped'... 0.10
SHADE (143228)#..\/#./targetYouWhenCognizant/chaseCritInternal/ix/updateCreature'.\/updateCreature'/updateCrea... 0.10
SHADE (142970)updatePastWorlds/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateUniverse/updateRenderSp... 0.10
SHADE (144491)ix.\/ix/#..\/#./moveWall/moveWallID/ifoldl'/doorLerp.f/doorLerp/updateDoor/updateDoors/functiona... 0.10
SHADE (138431)zoneIncPe.f/zoneIncPe/#..\/#./generateLevelFromRoomList/generateWorldFromSeed/startSeedGameConc/... 0.00
SHADE (144689)ix/crCrSpring/crSpring/simpleCrSprings/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateU... 0.00
SHADE (144506)moveWall.newwl/moveWall/moveWallID/ifoldl'/doorLerp.f/doorLerp/updateDoor/updateDoors/functional... 0.00
SHADE (143210)chaseCritAwarenessUpdate/chaseCritPerceptionUpdate/chainCreatureUpdates.unf/chainCreatureUpdates... 0.00
SHADE (144622)ix/getNodePos/updateEdgeWallObs/updateEdgesWall'/updateEdgesWall/updateDoors/functionalUpdate/ti... 0.05
SHADE (144511)each/#..\/#./taintedDot/each/doorLerp.wlposs/doorLerp.f/doorLerp/updateDoor/updateDoors/function... 0.05
SHADE (144740)colCrsWalls/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateUniverse/updateRenderSplit/t... 0.05
SHADE (143289)ix/checkDeath'.tocr/#..\/#./checkDeath'/checkDeath/crUpdate/updateCreature'.\/updateCreature'/up... 0.05
SHADE (144620)updateEdgeWallObs/updateEdgesWall'/updateEdgesWall/updateDoors/functionalUpdate/timeFlowUpdate/u... 0.10
SHADE (142987)#..\/#./zoneCreatures/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateUniverse/updateRen... 0.10
SHADE (156022)listSelectionColorPicture.g/listSelectionColorPicture/updateSection.(...)/updateSection/updateSe... 0.10
SHADE (144644)primitive/basicUnsafeCopy/ix.\/ix/updateEdge/updateEdgeWallObs/updateEdgesWall'/updateEdgesWall/... 0.10
SHADE (143425)#..\/#./rememberSounds/chaseCritPerceptionUpdate/chainCreatureUpdates.unf/chainCreatureUpdates/c... 0.00
SHADE (143174)updatePastWorlds/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateUniverse/updateRenderSp... 0.00
SHADE (143513)ix/#..\/#./updateExpBarrel/updateBarreloid.\/updateBarreloid/updateCreature'/updateCreature/dima... 0.00
SHADE (146310)#..\/#./mcApplyDamage/updateMachine/dimap/dimap/_Wrapped'/updateIMl'/functionalUpdate/timeFlowUp... 0.10
SHADE (143439)ix/#..\/#./performActions/updateCreature'.\/updateCreature'/updateCreature/dimap/dimap/_Wrapped'... 0.10
SHADE (143432)#..\/#./targetYouWhenCognizant/chaseCritInternal/ix/updateCreature'.\/updateCreature'/updateCrea... 0.10
SHADE (144727)ix.\/ix/#..\/#./moveWall/moveWallID/ifoldl'/doorLerp.f/doorLerp/updateDoor/updateDoors/functiona... 0.10
SHADE (149438)#..\/#./untaintedDot/each/_1/doDoorMount.\/doDoorMount/doorLerp.domounts/doorLerp/updateDoor/upd... 0.00
SHADE (138578)zoneIncPe.f/zoneIncPe/#..\/#./generateLevelFromRoomList/generateWorldFromSeed/startSeedGameConc/... 0.00
SHADE (144742)moveWall.newwl/moveWall/moveWallID/ifoldl'/doorLerp.f/doorLerp/updateDoor/updateDoors/functional... 0.00
SHADE (145015)ix/crCrSpring/crSpring/simpleCrSprings/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateU... 0.00
SHADE (143414)chaseCritAwarenessUpdate/chaseCritPerceptionUpdate/chainCreatureUpdates.unf/chainCreatureUpdates... 0.05
SHADE (144747)each/#..\/#./taintedDot/each/doorLerp.wlposs/doorLerp.f/doorLerp/updateDoor/updateDoors/function... 0.05
SHADE (145066)colCrsWalls/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateUniverse/updateRenderSplit/t... 0.05
SHADE (144970)primitive/basicUnsafeCopy/ix.\/ix/updateEdge/updateEdgeWallObs/updateEdgesWall'/updateEdgesWall/... 0.05
SHADE (143493)ix/checkDeath'.tocr/#..\/#./checkDeath'/checkDeath/crUpdate/updateCreature'.\/updateCreature'/up... 0.10
SHADE (144815)each/_1/doDoorMount.\/doDoorMount/doorLerp.domounts/doorLerp/updateDoor/updateDoors/functionalUp... 0.10
SHADE (143191)#..\/#./zoneCreatures/functionalUpdate/timeFlowUpdate/updateUniverseMid/updateUniverse/updateRen... 0.10
SHADE (149444)_xy/#..\/#./untaintedDot/each/_1/doDoorMount.\/doDoorMount/doorLerp.domounts/doorLerp/updateDoor... 0.10
+369245 -187118
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+2 -1
View File
@@ -210,7 +210,8 @@ collidePointWallsFilter t sp ep = collidePoint sp ep . filter t . wlsNearSeg sp
overlapSegWalls :: Point2 -> Point2 -> [Wall] -> [(Point2, Wall)]
{-# INLINE overlapSegWalls #-}
overlapSegWalls sp ep = mapMaybe $ \wl -> uncurry (intersectSegSeg sp ep) (_wlLine wl) <&> (,wl)
overlapSegWalls sp ep = mapMaybe
$ \wl -> uncurry (intersectSegSeg sp ep) (_wlLine wl) <&> (,wl)
visibleWalls :: Point2 -> Point2 -> World -> [(Point2, Wall)]
{-# INLINE visibleWalls #-}
+1 -7
View File
@@ -55,16 +55,10 @@ getEdgesCrossing s e w = filter inedgecrosses $ nearSeg peZoneSize _incEdgeZonin
updateEdge ::
(Set.Set EdgeObstacle -> Set.Set EdgeObstacle) ->
(Int, Int) ->
-- V.Vector [(Int, SimpleEdge)] ->
-- V.Vector [(Int, SimpleEdge)]
V.Vector (IM.IntMap SimpleEdge) ->
V.Vector (IM.IntMap SimpleEdge)
{-# INLINE updateEdge #-}
updateEdge f (i, j) = ix i . ix j . seObstacles %~ f
--updateEdge f (i, j) = ix i . each %~ g
-- where
-- g (k, o)
-- | j == k = (k, o & seObstacles %~ f)
-- | otherwise = (k, o)
makePathUsing :: (Set.Set EdgeObstacle -> Bool) -> Point2 -> Point2 -> World -> Maybe [Int]
makePathUsing t s e w = do
+1 -3
View File
@@ -141,9 +141,7 @@ wlsHit sp ep = sortOn (dist sp . fst) . wlsHitUnsorted sp ep
wlsHitUnsorted :: Point2 -> Point2 -> World -> [(Point2, Wall)]
wlsHitUnsorted sp ep
| sp == ep = const mempty
| otherwise =
overlapSegWalls sp ep
. wlsNearSeg sp ep
| otherwise = overlapSegWalls sp ep . wlsNearSeg sp ep
wlsHitRadial :: Point2 -> Float -> World -> [(Point2, Wall)]
wlsHitRadial p r = mapMaybe f . wlsNearCirc p r
+2 -1
View File
@@ -76,7 +76,8 @@ doLoop spf window worldSideEffects eventFn startWorld = do
maybeUpdatedWorld <- pollEvents >>= foldM (applyEventIO eventFn) (Just worldAfterSimStep)
case maybeUpdatedWorld of
Just updatedWorld -> do
performGC
performGC -- potentially use performMinorGC
-- https://stackoverflow.com/questions/30244139/how-to-keep-very-big-elements-on-memory-without-exhausting-the-garbage-collector
endTicks <- ticks -- it might be better to use System.Clock (monotonic)
let theDelay = max 0 (spf + fromIntegral startTicks - fromIntegral endTicks)
threadDelay (theDelay * 1000)