mouse0270 / module-credits

Lists the authors of projects on the Manage Modules Window. If a url is provided in the module.json file, it will make the version tag link to the module url.
MIT License
7 stars 7 forks source link

Feature: Measure module load times #16

Closed Weissrolf closed 2 years ago

Weissrolf commented 2 years ago

Ahoi. This is a feature request.

I would like if MC would (optionally) measure module load times to allow us to easily find modules that cause long load times. Admittedly I don't know if this is even possible under the hood without loading one module after another on its own (which I would be fine with for benchmarking)?!

mouse0270 commented 2 years ago

I am not quite sure I can hook into something like that. Let me sit on it, cause I am not sure, I know of a hacky way to accomplish it.

You could accomplish this in other ways though. For example, I could have a benchmark button, that will load one module at a time, and then telling you how long each module took to load. But if you have 100 modules, thats 100 refreshes

Weissrolf commented 2 years ago

Yep, the latter was what I referred to as "which I would be fine for benchmarking". ;)

Maybe it can be done in a way similar to Find the culprit. Going from large (more modules) to small (less modules) until a certain threshold is reached, like 0.1 seconds for a bunch of modules and then you don't get any smaller, but concentrate on the other bunch again.

On my desktop PC using Firefox loading an empty world without modules takes 12 seconds, loading a small adventure world with 100+ modules takes 15 seconds. I have to disable Token Magic FX' precaching, though, because that alone takes an extra 5 seconds. This is on a 5900X CPU, so on most other computers it all will take longer and I would like to know which modules contribute the most to load time to do better informed decisions on which modules might not be worth it (especially for my players on slower computers).

Fantasy Grounds measures module (extension) load times and it also can be done via addon in WoW. Too bad that there does not seem to be a core mechanism in place to do that.

mouse0270 commented 2 years ago

Outside of the scope of this module.