Skip to content
Snippets Groups Projects
Commit 2ef1e881 authored by Arkerthan's avatar Arkerthan
Browse files

Display time between passage events when profiling is enabled.

parent b71785e6
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", () => { ...@@ -8,19 +8,33 @@ $(document).on(":storyready", () => {
App.EventHandlers.storyReady(); App.EventHandlers.storyReady();
}); });
$(document).on(":passageinit", () => {
if (V.passageSwitchHandler) {
V.passageSwitchHandler();
delete V.passageSwitchHandler;
}
profileEvents.passageinit();
});
$(document).on(":passagestart", event => { $(document).on(":passagestart", event => {
App.Debug.slavesConsistency(event); App.Debug.slavesConsistency(event);
Object.defineProperty(State.temporary, "S", { Object.defineProperty(State.temporary, "S", {
get: () => S, get: () => S,
enumerable: true enumerable: true
}); });
profileEvents.passagestart();
}); });
$(document).on(":passageinit", () => { $(document).on(":passagerender", () => {
if (V.passageSwitchHandler) { profileEvents.passagerender();
V.passageSwitchHandler(); });
delete V.passageSwitchHandler;
} $(document).on(":passagedisplay", () => {
profileEvents.passagedisplay();
});
$(document).on(":passageend", ev => {
profileEvents.passageend(ev.content);
}); });
/* ### One-time listeners ### */ /* ### 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