initialize
diff --git a/src/performance.py b/src/performance.py
new file mode 100644
index 0000000..ce3cf93
--- /dev/null
+++ b/src/performance.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env

+

+import datetime, threading, thread

+

+class CheckPerf:

+    writelock = threading.Lock()

+    def __init__(self):

+        self.begintime = datetime.datetime.now()

+        self.endtime = None

+        self.mintime = 0.0

+        self.maxtime = 0.0

+        self.successcount = 0

+        self.failedcount = 0

+        self.totaltime = 0.0

+        self.reportmsg = ''

+        self.prechktime = None

+        

+    def startchk(self):

+        self.begintime = datetime.datetime.now()

+        self.endtime = None

+        self.mintime = 99999999.0

+        self.maxtime = 0.0

+        self.checkcount = 0

+        self.totaltime = 0.0

+        self.reportmsg = ''

+        self.prechktime = self.begintime

+    

+    def setchkpoint(self, success=True):

+        self.endtime = datetime.datetime.now()

+        delta = self.endtime - self.prechktime

+        t = delta.seconds + delta.microseconds / 1000000.0

+        if t < self.mintime: self.mintime = t

+        if t > self.maxtime: self.maxtime = t

+        if success:

+            self.successcount += 1

+        else:

+            self.failedcount += 1

+        self.totaltime += t

+        self.prechktime = self.endtime

+        

+    def _output_file(self, out_file):

+        handler = open(out_file, 'a+b')

+        handler.write("thrd[%d]" % thread.get_ident())

+        handler.write(' - ' + self.reportmsg + '\n')

+        handler.close()

+        

+    def _reportToFile(self, out_file):

+        CheckPerf.writelock.acquire()

+        try:

+            self._output_file(out_file)

+            print "generate report file " , out_file

+        except Exception, ex:

+            print "generator report file ", out_file , " Error ", ex

+        CheckPerf.writelock.release()

+        

+    def report_msg(self):

+        totalcheckcount = self.successcount + self.failedcount

+        if totalcheckcount > 2:

+            avg = (self.totaltime - self.mintime - self.maxtime) / (totalcheckcount - 2)

+        elif totalcheckcount == 0:

+            rpt = "No check point has been set"

+            return rpt

+        else:

+            avg = self.totaltime / totalcheckcount

+        rpt = 'execute[%d]count cost(s) [%.4f]max[%.4f]min[%.4f]avg[%.4f] success[%d] failed[%d]' \

+            % (totalcheckcount, self.totaltime, self.maxtime, self.mintime, avg, \

+            self.successcount, self.failedcount)

+        return rpt

+        

+    def report(self, out_file=None):

+        self.reportmsg = self.report_msg()

+        if out_file:

+            self._reportToFile(out_file)

+        return self.reportmsg

+