Files @ 8784bdc90648
Branch filter:

Location: light9/light9/recentfps.py

drewp@bigasterisk.com
rm external gtk themes
# server side version of what the metrics consumer does with changing counts
import time

class RecentFps:
  def __init__(self, window=20):
    self.window = window
    self.recentTimes = []

  def mark(self):
    now = time.time()
    self.recentTimes.append(now)
    self.recentTimes = self.recentTimes[-self.window:]

  def rate(self):
    def dec(innerFunc):
      def f(*a, **kw):
        self.mark()
        return innerFunc(*a, **kw)
      return f
    return dec

  def __call__(self):
    if len(self.recentTimes) < 2:
      return {}
    recents = sorted(round(1 / (b - a), 3)
                      for a, b in zip(self.recentTimes[:-1],
                                      self.recentTimes[1:]))
    avg = (len(self.recentTimes) - 1) / (
      self.recentTimes[-1] - self.recentTimes[0])
    return {'average': round(avg, 5), 'recents': recents}