[CalendarServer-changes] [6161] CalendarServer/trunk/contrib/performance

source_changes at macosforge.org source_changes at macosforge.org
Fri Aug 20 14:04:35 PDT 2010


Revision: 6161
          http://trac.macosforge.org/projects/calendarserver/changeset/6161
Author:   exarkun at twistedmatrix.com
Date:     2010-08-20 14:04:34 -0700 (Fri, 20 Aug 2010)
Log Message:
-----------
factor stats loading helper out so compare and graph can both use it

Modified Paths:
--------------
    CalendarServer/trunk/contrib/performance/benchlib.py
    CalendarServer/trunk/contrib/performance/compare.py
    CalendarServer/trunk/contrib/performance/graph.py

Modified: CalendarServer/trunk/contrib/performance/benchlib.py
===================================================================
--- CalendarServer/trunk/contrib/performance/benchlib.py	2010-08-20 21:03:43 UTC (rev 6160)
+++ CalendarServer/trunk/contrib/performance/benchlib.py	2010-08-20 21:04:34 UTC (rev 6161)
@@ -1,4 +1,4 @@
-
+import pickle
 from time import time
 
 from twisted.internet.defer import inlineCallbacks, returnValue
@@ -73,3 +73,22 @@
     stats = yield dtrace.stop()
     stats[Duration('urlopen time')] = data
     returnValue(stats)
+
+
+def select(statistics, benchmark, parameter, statistic):
+    for stat, samples in statistics[benchmark][int(parameter)].iteritems():
+        if stat.name == statistic:
+            return (stat, samples)
+    raise ValueError("Unknown statistic %r" % (statistic,))
+
+
+def load_stats(statfiles):
+    data = []
+    for fname in statfiles:
+        fname, bench, param, stat = fname.split(',')
+        stats, samples = select(
+            pickle.load(file(fname)), bench, param, stat)
+        data.append((stats, samples))
+        if data:
+            assert len(samples) == len(data[0][1])
+    return data

Modified: CalendarServer/trunk/contrib/performance/compare.py
===================================================================
--- CalendarServer/trunk/contrib/performance/compare.py	2010-08-20 21:03:43 UTC (rev 6160)
+++ CalendarServer/trunk/contrib/performance/compare.py	2010-08-20 21:04:34 UTC (rev 6161)
@@ -2,6 +2,8 @@
 
 import stats
 
+from benchlib import load_stats
+
 try:
     from scipy.stats import ttest_1samp
 except ImportError:
@@ -20,25 +22,15 @@
             [p, None])
 
 
-def select(statistics, benchmark, parameter, statistic):
-    for stat, samples in statistics[benchmark][int(parameter)].iteritems():
-        if stat.name == statistic:
-            return (stat, samples)
-    raise ValueError("Unknown statistic %r" % (statistic,))
-
-
 def main():
-    first = pickle.load(file(sys.argv[1]))
-    second = pickle.load(file(sys.argv[2]))
+    [(stat, first), (stat, second)] = load_stats(sys.argv[1:])
 
-    stat, first = select(first, *sys.argv[3:])
-    stat, second = select(second, *sys.argv[3:])
-
     fmean = stats.mean(first)
+    smean = stats.mean(second)
     p = 1 - ttest_1samp(second, fmean)[1][0]
     if p >= 0.95:
         # rejected the null hypothesis
-        print sys.argv[1], 'mean of', fmean, 'differs from', sys.argv[2], 'mean of', stats.mean(second), '(%2.0f%%)' % (p * 100,)
+        print sys.argv[1], 'mean of', fmean, 'differs from', sys.argv[2], 'mean of', smean, '(%2.0f%%)' % (p * 100,)
     else:
         # failed to reject the null hypothesis
-        print 'cannot prove means differ (%2.0f%%)' % (p * 100,)
+        print 'cannot prove means (%s, %s) differ (%2.0f%%)' % (fmean, smean, p * 100,)

Modified: CalendarServer/trunk/contrib/performance/graph.py
===================================================================
--- CalendarServer/trunk/contrib/performance/graph.py	2010-08-20 21:03:43 UTC (rev 6160)
+++ CalendarServer/trunk/contrib/performance/graph.py	2010-08-20 21:04:34 UTC (rev 6161)
@@ -4,20 +4,13 @@
 from matplotlib import pyplot
 import numpy
 
-from compare import select
+from benchlib import load_stats
 
 def main():
     fig = pyplot.figure()
     ax = fig.add_subplot(111)
 
-    data = []
-    for fname in sys.argv[1:]:
-        fname, bench, param, stat = fname.split(',')
-        stats, samples = select(
-            pickle.load(file(fname)), bench, param, stat)
-        data.append(samples)
-        if data:
-            assert len(samples) == len(data[0])
+    data = [samples for (stat, samples) in load_stats(sys.argv[1:])]
 
     bars = []
     color = iter('rgbcmy').next
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100820/f24e8bdc/attachment-0001.html>


More information about the calendarserver-changes mailing list