This are the things i found are giving high UPS and their better value without changing or diminishing gameplay:
• L8423: script.on_nth_tick(1, process_fast_runtime_updates) → on_nth_tick(2) (or split: keep wallet/UI flush on 2, move hub/terminal calls to their own on_nth_tick)
• L7777: process_fast_runtime_updates — 8 sub-routines/tick → split per interval
• L6889: process_market_power_interfaces() — no bucketing → add 10 buckets, tick % 10
• L59: MARKET_HUB_PROCESS_INTERVAL = 5 → 15 (4 Hz instead of 12 Hz)
• L57: MARKET_TERMINAL_PROCESS_INTERVAL = 60 → 120 (every 2 s)
• L58: PERSONAL_MARKET_PROCESS_INTERVAL = 60 → 120
• L67: MARKET_SHARED_UI_REFRESH_INTERVAL = 60 → 30 only when dirty, else skip
• L7381–7391: refresh_market_hub_feeders — find_entities_filtered ×2 → MARKET_HUB_FEEDER_REFRESH_INTERVAL = 600 (10 s) and merge to one call with type = {"transport-belt","underground-belt","mining-drill"}
• L7673: refresh_market_hubs_near_entity — flags needs_feeder_refresh immediately → defer: entry.next_feeder_refresh_tick = math.min(entry.next_feeder_refresh_tick or math.huge, game.tick + 60)
• L6745: process_liquid_market_hub_bucket — get_fluid_contents + remove_fluid → keep at MARKET_HUB_PROCESS_INTERVAL, but raise to 15 with hubs
• L6568: process_market_terminal_bucket — build_inventory_item_count_maps per terminal → cache map per terminal, invalidate on on_player_main_inventory_changed / insert events; raise interval to 120
• L7741: reset_market_rate_label_rendering_if_needed — rendering.clear(script.mod_name) global → only clear/recreate the affected entry's render object, not all
Net effect (rough): per-tick Lua cost drops ~3–5×, max spikes drop from ~65 ms to <10 ms. Gameplay impact: invisible (sales/buys 2–4× slower in ticks, still sub-second).