Module albow.profiling

Source code
#-----------------------------------------------------------------------------
#
#   Albow - Profiling
#
#-----------------------------------------------------------------------------

from time import time

enable = False
stack = []
t_last_begin_frame = 0.0
t_used = 0.0
indent = "    "
label_width = 0

def start_profiling(frame_time):
        global target_frame_time, enable
        target_frame_time = frame_time
        enable = True
        del stack[:]

def stop_profiling():
        global enable
        enable = False

def begin(label):
        if enable:
                global label_width
                label_width = max(label_width, len(label))
                stack.append([label, time()])

def end(label):
        if enable:
                global t_used
                t1 = time()
                s = stack
                while s:
                        item = s.pop()
                        item_label = item[0]
                        t0 = item[1]
                        t = t1 - t0
                        print("%s%8.6f %s" % (indent * (len(s) + 1), t, item_label))
                        if not s:
                                t_used += t
                        if item_label == label:
                                break

def begin_frame():
        if enable:
                global t_last_begin_frame, t_used
                t0 = t_last_begin_frame
                t1 = time()
                tf = t1 - t0
                tu = t_used
                ts = target_frame_time - tu
                pf = 100.0 * tf / target_frame_time
                ps = 100.0 * ts / target_frame_time
                print("%8.6f Frame (%3.0f%%) Used: %8.6f Spare: %8.6f (%3.0f%%)" % (
                        tf, pf, tu, ts, ps))
                t_last_begin_frame = t1
                t_used = 0.0

Functions

def begin(label)
Source code
def begin(label):
        if enable:
                global label_width
                label_width = max(label_width, len(label))
                stack.append([label, time()])
def begin_frame()
Source code
def begin_frame():
        if enable:
                global t_last_begin_frame, t_used
                t0 = t_last_begin_frame
                t1 = time()
                tf = t1 - t0
                tu = t_used
                ts = target_frame_time - tu
                pf = 100.0 * tf / target_frame_time
                ps = 100.0 * ts / target_frame_time
                print("%8.6f Frame (%3.0f%%) Used: %8.6f Spare: %8.6f (%3.0f%%)" % (
                        tf, pf, tu, ts, ps))
                t_last_begin_frame = t1
                t_used = 0.0
def end(label)
Source code
def end(label):
        if enable:
                global t_used
                t1 = time()
                s = stack
                while s:
                        item = s.pop()
                        item_label = item[0]
                        t0 = item[1]
                        t = t1 - t0
                        print("%s%8.6f %s" % (indent * (len(s) + 1), t, item_label))
                        if not s:
                                t_used += t
                        if item_label == label:
                                break
def start_profiling(frame_time)
Source code
def start_profiling(frame_time):
        global target_frame_time, enable
        target_frame_time = frame_time
        enable = True
        del stack[:]
def stop_profiling()
Source code
def stop_profiling():
        global enable
        enable = False