denpadokei / HttpSiraStatus

Live game status over web sockets.
MIT License
23 stars 3 forks source link

Loading into a V3 map with many lighting events has greatly increased load times #45

Closed namaki-mono closed 1 year ago

namaki-mono commented 1 year ago

Current behavior

Loading into a V3 map with many lighting events greatly increases the load time when the mod is installed.

Example: Loading into this map: https://beatsaver.com/maps/2f3a2 (Beat Saber 1.26+ required to load into The Weeknd environment).

Load time without any mods installed: Instant Load time without HttpSiraStatus installed: 5.12 seconds Load time with HttpSiraStatus installed: 12.48 seconds

Expected behavior

V3 maps use a lot of lighting events compared to V2 maps, so the plugin should be optimized to reduce its effect on load times.

Reproduction steps

  1. Install HttpSiraStatus.
  2. Press "Play" on a V3 map with many lighting events (e.g. https://beatsaver.com/maps/2f3a2 ).
  3. Notice how long it takes for the map to load.

Environment

BeatSaber version: 1.26 HTTP Status version: 9.0.2 Platform: Steam

Additional Information

This function seems to be called for every event in a V3 map: https://github.com/denpadokei/HttpSiraStatus/blob/master/HttpSiraStatus/Models/V3BeatmapEventInfomation.cs#L48

The V3 map listed above has over 150000 events, so the function may be causing the performance to drop.

denpadokei commented 1 year ago

Thank you for the issue. I tried to modify it so that reading optimization and invalidation of BeatmapEvent transmission can be set. try it. HttpSiraStatus-9.0.3-rc1-bs1.26.0-2975c02.zip

namaki-mono commented 1 year ago

I tried the new plugin and set sendBeatmapEvents to false in the config, and my load time on the example map has been reduced to 5 seconds. This is a very good improvement, thank you very much! 😄