#!/usr/bin/python
from __future__ import division
import __main__
import cairo
import gtk
import math
import os

NFRAMES = 1000

def result(name, start, end):
    elapsed_user = end[0] - start[0]
    elapsed_sys  = end[1] - start[1]
    elapsed_real = end[4] - start[4]

    print "  op: %s" % name
    print "user: %.3f" % elapsed_user
    print " sys: %.3f" % elapsed_sys
    print "real: %.3f" % elapsed_real
    print "op/s: %.3f" % (NFRAMES / elapsed_real)

def bench(op, drawarea):
    cr = drawingarea.window.cairo_create()
    start = os.times()
    for i in range(0, NFRAMES):
        op(cr, i)
    end = os.times()
    result(op.__name__, start, end)

def arc(cr, frame):
    cr.set_source_rgb(frame % 2, (frame // 2) % 2, (frame // 3) % 2)
    cr.arc(150 + frame / 500, 150, 50 + (frame / 10), 0, 2 * math.pi)
    cr.fill()

def rect(cr, frame):
    cr.set_source_rgb(frame % 2, (frame // 2) % 2, (frame // 3) % 2)
    cr.arc(150 + frame / 500, 150, 50 + (frame / 10), 0, 2 * math.pi)
    cr.fill()

win = gtk.Window()
drawingarea = gtk.DrawingArea()
win.add(drawingarea)
drawingarea.set_size_request(1200,900)
win.show_all()

bench(arc, drawingarea)

del win
