Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/timetest.py
blob: 8ed6d547e51cea7ad3b8d6310ed8815c1ab97ac0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/python
import pygtk
pygtk.require( '2.0' )
import gtk
import gobject
import time
import sys

from GUI.Core.MainWindow import MainWindow
from Framework.Constants import Constants
from Framework.CSound.CSoundClient import CSoundClient
from Framework.CSound.CSoundServer import CsoundServerMult

import lltimer

class GTKTimerWithCallback :
    def __init__(self,msecs) :
        gobject.timeout_add( msecs, self.printTime)
        self.maxerr=0;
        self.cumerr=0;
        self.ctr=0;
        self.msecs=msecs
        self.lasttime=-1

    def printTime(self) :
        if self.lasttime==-1 :
            self.lasttime=time.time()
        else :
            currtime = time.time()
            diff = currtime-self.lasttime
            self.lasttime = currtime
            err= (diff*1000)-self.msecs
            if err>self.maxerr :
                self.maxerr=err
            self.ctr+=1
            self.cumerr+=abs(err)            
            if abs(err)>5:
                print "GTK ms error",err,"mx",self.maxerr,"mean",(self.cumerr/self.ctr)
            else :
                print "Tick",time.time()
        return True



class PThreadTimerWithCallback :
    def __init__(self,msecs) :
        lltimer.timeout_add(msecs,self.printTime)
        self.maxerr=0;
        self.cumerr=0;
        self.ctr=0;
        self.msecs=msecs        
        self.lasttime=-1;
        
    def printTime(self) :
        if self.lasttime==-1 :
            self.lasttime=time.time()
        else :
            currtime = time.time()
            diff = currtime-self.lasttime
            self.lasttime = currtime
            err= (diff*1000)-self.msecs
            if err>self.maxerr :
                self.maxerr=err
            self.ctr+=1
            self.cumerr+=abs(err)            
            if abs(err)>5 :
                print "PThread ms error",err,"mx",self.maxerr,"mean",(self.cumerr/self.ctr)
            else:
                print "Tick",time.time()
        return True



        
if __name__ == "__main__": 
    CSoundClient.initialize()
    tamTam = MainWindow()


    if len(sys.argv)<2 :
        print "Usage timetest.py <gtk|pthread>"
        print "You must be root or suid to benefit from pthread enhanced timing"
        sys.exit(0)

    if (sys.argv[1]=="gtk") :
        t = GTKTimerWithCallback(1000)
    elif (sys.argv[1]=="pthread"):
        t = PThreadTimerWithCallback(1000)
    else :
        print "Usage timetest.py <gtk|pthread>"
        print "You must be root or suid to benefit from pthread enhanced timing"
          
    
    gtk.main()