Commit 0cc05fc4 authored by AUTOMATIC's avatar AUTOMATIC
Browse files

work on startup profile display

parent 05e6fc9a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -5,6 +5,8 @@

        <a href="https://gradio.app">Gradio</a>

        <a href="#" onclick="showProfile('./internal/profile-startup'); return false;">Startup profile</a>

        <a href="/" onclick="javascript:gradioApp().getElementById('settings_restart_gradio').click(); return false">Reload UI</a>
</div>
<br />
+91 −0
Original line number Diff line number Diff line

function createRow(table, cellName, items) {
    var tr = document.createElement('tr');
    var res = [];

    items.forEach(function(x) {
        var td = document.createElement(cellName);
        td.textContent = x;
        tr.appendChild(td);
        res.push(td);
    });

    table.appendChild(tr);

    return res;
}

function showProfile(path, cutoff = 0.0005) {
    requestGet(path, {}, function(data) {
        var table = document.createElement('table');
        table.className = 'popup-table';

        data.records['total'] = data.total;
        var keys = Object.keys(data.records).sort(function(a, b) {
            return data.records[b] - data.records[a];
        });
        var items = keys.map(function(x) {
            return {key: x, parts: x.split('/'), time: data.records[x]};
        });
        var maxLength = items.reduce(function(a, b) {
            return Math.max(a, b.parts.length);
        }, 0);

        var cols = createRow(table, 'th', ['record', 'seconds']);
        cols[0].colSpan = maxLength;

        function arraysEqual(a, b) {
            return !(a < b || b < a);
        }

        var addLevel = function(level, parent) {
            var matching = items.filter(function(x) {
                return x.parts[level] && !x.parts[level + 1] && arraysEqual(x.parts.slice(0, level), parent);
            });
            var sorted = matching.sort(function(a, b) {
                return b.time - a.time;
            });
            var othersTime = 0;
            var othersList = [];
            sorted.forEach(function(x) {
                if (x.time < cutoff) {
                    othersTime += x.time;
                    othersList.push(x.parts[level]);
                    return;
                }

                var cells = [];
                for (var i = 0; i < maxLength; i++) {
                    cells.push(x.parts[i]);
                }
                cells.push(x.time.toFixed(3));
                var cols = createRow(table, 'td', cells);
                for (i = 0; i < level; i++) {
                    cols[i].className = 'muted';
                }

                addLevel(level + 1, parent.concat([x.parts[level]]));
            });

            if (othersTime > 0) {
                var cells = [];
                for (var i = 0; i < maxLength; i++) {
                    cells.push(parent[i]);
                }
                cells.push(othersTime.toFixed(3));
                var cols = createRow(table, 'td', cells);
                for (i = 0; i < level; i++) {
                    cols[i].className = 'muted';
                }

                cols[level].textContent = 'others';
                cols[level].title = othersList.join(", ");
            }
        };

        addLevel(0, []);

        popup(table);
    });
}
+1 −1
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ onOptionsChanged(function() {
function settingsHintsShowQuicksettings() {
    requestGet("./internal/quicksettings-hint", {}, function(data) {
        var table = document.createElement('table');
        table.className = 'settings-value-table';
        table.className = 'popup-table';

        data.forEach(function(obj) {
            var tr = document.createElement('tr');
+3 −0
Original line number Diff line number Diff line
@@ -7,6 +7,8 @@ from typing import Optional, Dict, Any
from fastapi import FastAPI
from gradio import Blocks

from modules import timer


def report_exception(c, job):
    print(f"Error executing callback {job} for {c.script}", file=sys.stderr)
@@ -123,6 +125,7 @@ def app_started_callback(demo: Optional[Blocks], app: FastAPI):
    for c in callback_map['callbacks_app_started']:
        try:
            c.callback(demo, app)
            timer.startup_timer.record(c.script)
        except Exception:
            report_exception(c, 'app_started_callback')

+2 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ from collections import namedtuple

import gradio as gr

from modules import shared, paths, script_callbacks, extensions, script_loading, scripts_postprocessing
from modules import shared, paths, script_callbacks, extensions, script_loading, scripts_postprocessing, timer

AlwaysVisible = object()

@@ -270,6 +270,7 @@ def load_scripts():
        finally:
            sys.path = syspath
            current_basedir = paths.script_path
            timer.startup_timer.record(scriptfile.filename)

    global scripts_txt2img, scripts_img2img, scripts_postproc

Loading