perf(GCodeProcessor): stop recompiling std::regex on every g-code line
process_SET_VELOCITY_LIMIT() constructed three std::regex objects from
scratch on every call, and Klipper-flavor g-code contains
SET_VELOCITY_LIMIT on a large share of lines (8,834 of 103,549 lines for
a single 3DBenchy sliced for a Creality K2). perf attributes 6.4% of the
whole slicing run to this one function, almost all of it regex
compilation and the allocator traffic it generates.
process_SET_PRESSURE_ADVANCE() and the External_Purge_Tag handler had
the same per-call construction.
Hoist all five patterns to function-local static const std::regex so
they compile once. Generated g-code is byte-identical (modulo the
timestamp header); slicing a 16x Benchy plate for a K2 drops from
78.5s to 27.3s wall (2.9x) on a 16-core Linux box, single Benchy from
8.9s to 5.6s.
Co-authored-by: grant0013 <grant@harktech.co.uk>
Address SoftFever review item 1 on #13752: CFS sync now lives in
CrealityPrintAgent::fetch_filament_info, matching the MoonrakerPrinterAgent
/ QidiPrinterAgent / SnapmakerPrinterAgent shape. The standard
Sidebar::sync_ams_list
-> DeviceManager::get_selected_machine()
-> Sidebar::load_ams_list(obj)
-> Sidebar::build_filament_ams_list(obj)
-> agent->fetch_filament_info(dev_id)
-> build_ams_payload(box_count, max_lane_index, trays)
path now applies to CrealityPrint hosts identically to the other
Klipper-flavoured agents. CrealityPrintAgent inherits
MoonrakerPrinterAgent, so the inherited connect_printer() ->
announce_printhost_device() -> SSDP callback already triggers
MachineObject creation in DeviceManager's localMachineList for
K-series LAN hosts; the Plater-side special case was simply bypassing
get_selected_machine() before it could fire.
Removed:
* The if (host_type == htCrealityPrint) block in
Sidebar::sync_ams_list (and the CrealityPrintAgent.hpp include it
required).
* The static CrealityPrintAgent::sync_filaments_into_ams_list()
helper that wrote directly to PresetBundle::filament_ams_list,
plus the CFSAmsListResult status struct that surfaced dialog text
back to the Sidebar.
CrealityPrintAgent::fetch_filament_info itself is unchanged - it was
already calling the inherited build_ams_payload() correctly.
Net diff: 227 deletions / 4 insertions across 3 files. No behaviour
change. Discovery + WS protocol parsing unchanged.