SA 实体每 tick 双 selector AABB 扫描 + ArrayList 已命中列表 O(n²)(多实体连发放大) #1

Closed
opened 2026-09-03 14:50:00 +00:00 by layue13 · 1 comment
Owner

问题描述

EntityMagneticStorm(SA/entity/EntityMagneticStorm.java:281-329,485 行)等 Drive 族实体每 tick 两次 getEntitiesWithinAABBExcludingEntity(Destructable+Attackable selector),alreadyHitEntity 为 ArrayList,removeAll/contains 线性 O(n²);命中后每实体 10 次 spawnParticle。SA_9.java 一次释放多个 EntityMagneticStorm(:111/:120),成本成倍。
建议:alreadyHitEntity 换按 EntityId 的 Set;粒子循环改用 worldObj.spawnParticle 批量或削减数量。

### 问题描述 **EntityMagneticStorm**(SA/entity/EntityMagneticStorm.java:281-329,485 行)等 Drive 族实体每 tick 两次 getEntitiesWithinAABBExcludingEntity(Destructable+Attackable selector),alreadyHitEntity 为 ArrayList,removeAll/contains 线性 O(n²);命中后每实体 10 次 spawnParticle。SA_9.java 一次释放多个 EntityMagneticStorm(:111/:120),成本成倍。 建议:alreadyHitEntity 换按 EntityId 的 Set;粒子循环改用 worldObj.spawnParticle 批量或削减数量。
Author
Owner

Archive 组织仓已过时(Daniel 2026-09-23),整组织 issue 统一关闭。

Archive 组织仓已过时(Daniel 2026-09-23),整组织 issue 统一关闭。
layue13 added the
type
perf
priority
p2
labels 2026-10-06 21:07:42 +00:00
layue13 changed title from [性能][中] SA 实体每 tick 双 selector AABB 扫描 + ArrayList 已命中列表 O(n²)(多实体连发放大) to SA 实体每 tick 双 selector AABB 扫描 + ArrayList 已命中列表 O(n²)(多实体连发放大) 2026-10-06 21:07:42 +00:00
This repo is archived. You cannot comment on issues.
No labels
priority
p2
type
perf
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Archive/slashblade-negorerouse#1