Skip to content
Snippets Groups Projects
Commit 6813c96f authored by Pregmodder's avatar Pregmodder
Browse files

Merge branch 'profiler' into 'pregmod-master'

Display time between passage events when profiling is enabled.

See merge request pregmodfan/fc-pregmod!9001
parents d2de276b 2ef1e881
No related branches found
No related tags found
No related merge requests found
.profile-events {
display: grid;
grid-template-columns: max-content max-content max-content auto;
grid-column-gap: 1em;
}
globalThis.profileEvents = (function() {
let passageinit = 0;
let passagestart = 0;
let passagerender = 0;
let passagedisplay = 0;
let passageend = 0;
/**
* @param {HTMLElement} container
*/
function render(container) {
App.UI.DOM.appendNewElement("h2", container, "Passage Events Profiler");
const p = document.createElement("p");
p.classList.add("profile-events");
row(p, ":passageinit", ":passagestart", "Copy State", passagestart - passageinit);
row(p, ":passagestart", ":passagerender", "Render", passagerender - passagestart);
row(p, ":passagerender", ":passagedisplay", "Display", passagedisplay - passagerender);
row(p, ":passagedisplay", ":passageend", "Cleanup / Auto Save", passageend - passagedisplay);
container.append(p);
}
function row(container, start, stop, desc, value) {
App.UI.DOM.appendNewElement("div", container, `From ${start}`);
App.UI.DOM.appendNewElement("div", container, `To ${stop}`);
App.UI.DOM.appendNewElement("div", container, `(${desc})`);
App.UI.DOM.appendNewElement("div", container, `${value}ms`);
}
return {
passageinit: () => {
if (V.profiler) {
passageinit = performance.now();
}
},
passagestart: () => {
if (V.profiler) {
passagestart = performance.now();
}
},
passagerender: () => {
if (V.profiler) {
passagerender = performance.now();
}
},
passagedisplay: () => {
if (V.profiler) {
passagedisplay = performance.now();
}
},
/**
* @param {HTMLElement} content
*/
passageend: (content) => {
if (V.profiler) {
passageend = performance.now();
render(content);
}
},
};
})();
......@@ -8,19 +8,33 @@ $(document).on(":storyready", () => {
App.EventHandlers.storyReady();
});
$(document).on(":passageinit", () => {
if (V.passageSwitchHandler) {
V.passageSwitchHandler();
delete V.passageSwitchHandler;
}
profileEvents.passageinit();
});
$(document).on(":passagestart", event => {
App.Debug.slavesConsistency(event);
Object.defineProperty(State.temporary, "S", {
get: () => S,
enumerable: true
});
profileEvents.passagestart();
});
$(document).on(":passageinit", () => {
if (V.passageSwitchHandler) {
V.passageSwitchHandler();
delete V.passageSwitchHandler;
}
$(document).on(":passagerender", () => {
profileEvents.passagerender();
});
$(document).on(":passagedisplay", () => {
profileEvents.passagedisplay();
});
$(document).on(":passageend", ev => {
profileEvents.passageend(ev.content);
});
/* ### One-time listeners ### */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment