侵入式优化

侵入式优化

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

性能

侵入式优化

Logo

针对其他模组的侵入式优化,旨在减少服务器端(刻)卡顿。
这些更改的侵入性使其更可能崩溃或以其他方式损坏。
请将此类问题报告到问题追踪器,我会尽力及时回复。
每个更改都可以通过配置文件单独开启/关闭,以便在等待修复期间临时解决问题。

本模组包含的优化分为以下几类:

  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 延迟修复 中的指数退避)
    • 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<String>,因为热代码中存在冷路径。(PR)
    • placebo.streamless_hashing (1):用不使用 Stream API 的等效代码替换 CachedObject#hashComponents。(PR)
  • SFM
    • sfm.filter_caching (5):使用 BitSet、整数数组或单个整数缓存物品和流体过滤器(目前支持普通/正则和标签过滤器)。占用更多内存,并导致首次编译耗时更长。
  • Xycraft Machines
    • xycraft_machines.redstone_checks (3):提取器每刻检查红石信号,而不仅仅是在相邻方块更新时。
    • xycraft_machines.unnecessary_resorting (3):提取器会频繁重新排序其配方,但通常没有必要。