SAxianshizhan.getEntityToWatch(src/main/java/net/langball/last_smith/louguan/sa/SAxianshizhan.java:45-63):以 2 格步进、dist=2..18 共 10 轮循环,每轮 world.getEntitiesWithinAABB(Entity.class, bb) 全量实体扫描 + 对返回列表逐个 getDistanceToEntity,且每轮 player.boundingBox.expand(2.0, 0.25, 2.0) 调用了两次(:48 与 :50,疑似笔误,实际 expand 到 4.0/0.5/4.0),使第一轮扫描体积即远超预期,后续轮次体积线性放大。该扫描虽只在 SA 触发时执行一次,但每轮返回的列表包含所有非排除实体(含掉落物、经验球),10 轮最坏情况是同方向实体被重复扫描多次。
world.getEntitiesWithinAABB(Entity.class, bb)
getDistanceToEntity
player.boundingBox.expand(2.0, 0.25, 2.0)
EntitySA.onUpdate(EntitySA.java:159-233):实体生命期内每 tick 两次 getEntitiesWithinAABBExcludingEntity(DestructableSelector + AttackableSelector,bb 基于 setSize(4.0f,4.0f)),命中列表用 List removeAll/contains(alreadyHitEntity ArrayList)做 O(n²) 线性匹配;每次销毁破坏物时内联 10 次 spawnParticle("explode", ...)。多把 SA 刀同时释放(Not10 式连发)时实体数与扫描成本成倍增长。
getEntitiesWithinAABBExcludingEntity
List removeAll/contains
spawnParticle("explode", ...)
建议:getEntityToWatch 用单次 rayTraceEntities/扩大 AABB 一次扫描替代 10 轮循环并修掉双重 expand 笔误;alreadyHitEntity 换 Set(按 EntityId)。
Archive 组织仓已过时(Daniel 2026-09-23),整组织 issue 统一关闭。
No dependencies set.
The note is not visible to the blocked user.
问题描述
SAxianshizhan.getEntityToWatch(src/main/java/net/langball/last_smith/louguan/sa/SAxianshizhan.java:45-63):以 2 格步进、dist=2..18 共 10 轮循环,每轮
world.getEntitiesWithinAABB(Entity.class, bb)全量实体扫描 + 对返回列表逐个getDistanceToEntity,且每轮player.boundingBox.expand(2.0, 0.25, 2.0)调用了两次(:48 与 :50,疑似笔误,实际 expand 到 4.0/0.5/4.0),使第一轮扫描体积即远超预期,后续轮次体积线性放大。该扫描虽只在 SA 触发时执行一次,但每轮返回的列表包含所有非排除实体(含掉落物、经验球),10 轮最坏情况是同方向实体被重复扫描多次。EntitySA.onUpdate(EntitySA.java:159-233):实体生命期内每 tick 两次
getEntitiesWithinAABBExcludingEntity(DestructableSelector + AttackableSelector,bb 基于 setSize(4.0f,4.0f)),命中列表用List removeAll/contains(alreadyHitEntity ArrayList)做 O(n²) 线性匹配;每次销毁破坏物时内联 10 次spawnParticle("explode", ...)。多把 SA 刀同时释放(Not10 式连发)时实体数与扫描成本成倍增长。建议:getEntityToWatch 用单次 rayTraceEntities/扩大 AABB 一次扫描替代 10 轮循环并修掉双重 expand 笔误;alreadyHitEntity 换 Set(按 EntityId)。
Archive 组织仓已过时(Daniel 2026-09-23),整组织 issue 统一关闭。
[性能][中] SA 目标搜索 10 轮逐步扩大 AABB 全量实体扫描(含双重 expand 笔误)+ Drive 实体每 tick 双 selector 扫描与 O(n²) 已命中列表to SA 目标搜索 10 轮逐步扩大 AABB 全量实体扫描(含双重 expand 笔误)+ Drive 实体每 tick 双 selector 扫描与 O(n²) 已命中列表