侵入式优化

侵入式优化

对其他模组的侵入性优化。如果遇到任何问题,请先禁用此模组!

优化

Invasive Optimizations

Logo

对其他模组进行侵入式优化,旨在减少服务端(tick)延迟。
这些变更的侵入性使其更容易导致崩溃或其他损坏。
请将此类问题报告至问题追踪器,我会尽快回复。
每项变更也可通过配置单独开关,以便在等待修复期间临时解决任何问题。

本模组包含的优化属于以下类别之一:

  1. 补丁已提交但长时间未审核,或预计在下一个版本发布前有用。
  2. 补丁因与质量无关的原因被拒绝,例如不再维护,这种情况下未来的优化也不会再提交给该模组。
  3. 补丁没有贡献途径(例如闭源模组)
  4. 补丁已应用但在已发布版本中不可用。
  5. 补丁为实验性或用途存疑(这些默认禁用)

当前优化:

  • Accessories
    • accessories.roundabout_collection (1):避免通过直接访问底层 keySet 来遍历 Map entrySet。(PR)
  • Applied Energistics 2
    • ae2.cache_fuzzy_search_max_value (4):在初始化期间缓存 AEItemKey::fuzzySearchMaxValue。(PR)
  • Botany Pots
    • botanypots.hopper_insertions (1):漏斗植物盆指数插入退避与空值追踪 (PR)
  • Create
    • create.fail_fast_clipboard_migration (4):在 ItemStack.<init> 中尝试剪贴板迁移时快速失败,减少对这一极其常见操作的影响。(PR)
  • Pastel
    • pastel.nuke_item_predicate_mixin (4):移除 Pastel 的 ItemPredicateMixin,因为它不必要且开销大
  • Pipez(另请参阅 AlmanaX21 的 Pipez Lag Fix 以了解指数退避)
    • pipez.constant_fullness_checks (2):将连接/库存满度检查转换为 O(1) 操作
    • pipez.early_exits (2):在满足正确条件时提前退出目标函数,减少不必要的工作
    • pipez.extract_looped_work (2):将部分工作移出循环以避免重复工作
    • pipez.filter_caching (2):使用 BitSet、整数数组或单个整数缓存标签过滤器。占用更多内存,并导致加载管道略微变慢。
    • pipez.nbt_comparisons (2):通过最小化序列化/反序列化操作,大幅提升 NBT 比较的性能
    • pipez.stream_abuse (2):减少热路径中对 Stream 的滥用,以降低分配率 (PR)
  • Placebo
    • placebo.lazy_string_concatenation (1):在 DynamicHolder#get 中向 Object#requireNonNull 传递 Supplier,因为它是热代码中的冷路径。(PR)
    • placebo.streamless_hashing (1):用不使用 Stream API 的等效代码替换 CachedObject#hashComponents。(PR)
  • SFM
    • sfm.filter_caching (5):使用 BitSet、整数数组或单个整数缓存物品和流体过滤器(目前为常规/正则和标签过滤器)。占用更多内存,并导致首次编译耗时更长。
  • Xycraft Machines
    • xycraft_machines.redstone_checks (3):提取器每 tick 检查红石信号,而非仅在其相邻方块更新时检查
    • xycraft_machines.unnecessary_resorting (3):提取器会不时重新排序其配方,但通常并不必要