[pypy-svn] r71346 - in pypy/benchmarks: . own

fijal at codespeak.net fijal at codespeak.net
Fri Feb 19 23:38:50 CET 2010


Author: fijal
Date: Fri Feb 19 23:38:47 2010
New Revision: 71346

Added:
   pypy/benchmarks/own/twisted_names.py   (contents, props changed)
Modified:
   pypy/benchmarks/benchmarks.py
   pypy/benchmarks/own/twisted_benchlib.py
Log:
add twisted_names benchmark. Next time I'm going to do the proper thing,
I promise


Modified: pypy/benchmarks/benchmarks.py
==============================================================================
--- pypy/benchmarks/benchmarks.py	(original)
+++ pypy/benchmarks/benchmarks.py	Fri Feb 19 23:38:47 2010
@@ -17,7 +17,7 @@
 
     d[BM.func_name] = BM
 
-TWISTED = [relative('lib/Twisted-9.0.0'), relative('lib/zope.interface-3.5.3/src')]
+TWISTED = [relative('lib/twisted-trunk'), relative('lib/zope.interface-3.5.3/src')]
 
 opts = {
     'gcbench' : {'iteration_scaling' : .10},
@@ -25,11 +25,13 @@
         'bm_env': {'PYTHONPATH': ':'.join(TWISTED)}},
     'twisted_web': {'iteration_scaling': .10,
         'bm_env': {'PYTHONPATH': ':'.join(TWISTED)}},
+    'twisted_names': {'iteration_scaling': .10,
+        'bm_env': {'PYTHONPATH': ':'.join(TWISTED)}},
 }
 
 for name in ['float', 'nbody_modified', 'meteor-contest', 'fannkuch',
              'spectral-norm', 'chaos', 'telco', 'gcbench',
-             'twisted_iteration', 'twisted_web']:
+             'twisted_iteration', 'twisted_web', 'twisted_names']:
     _register_new_bm(name, name, globals(), **opts.get(name, {}))
 _register_new_bm('spitfire', 'spitfire', globals(),
     extra_args=['--benchmark=spitfire_o4'])

Modified: pypy/benchmarks/own/twisted_benchlib.py
==============================================================================
--- pypy/benchmarks/own/twisted_benchlib.py	(original)
+++ pypy/benchmarks/own/twisted_benchlib.py	Fri Feb 19 23:38:47 2010
@@ -28,3 +28,21 @@
                 finished.errback(reason)
             else:
                 finished.callback(self._requestCount)
+
+def driver(f):
+    from twisted.internet import reactor
+    d = f(reactor)
+    reactor.callWhenRunning(d.addBoth, lambda ign: reactor.stop())
+    reactor.run()
+
+def multidriver(*f):
+    from twisted.internet import reactor
+    jobs = iter(f)
+    def work():
+        for job in jobs:
+            d = job(reactor)
+            d.addCallback(lambda ignored: work())
+            return
+        reactor.stop()
+    reactor.callWhenRunning(work)
+    reactor.run()

Added: pypy/benchmarks/own/twisted_names.py
==============================================================================
--- (empty file)
+++ pypy/benchmarks/own/twisted_names.py	Fri Feb 19 23:38:47 2010
@@ -0,0 +1,45 @@
+
+from __future__ import division
+
+from twisted.python.log import err
+from twisted.internet.defer import Deferred
+from twisted.names.dns import DNSDatagramProtocol
+from twisted.names.server import DNSServerFactory
+from twisted.names import hosts, client
+
+from twisted_benchlib import Client, driver
+
+
+class Client(Client):
+    def __init__(self, reactor, portNumber):
+        self._resolver = client.Resolver(servers=[('127.0.0.1', portNumber)])
+        super(Client, self).__init__(reactor)
+
+
+    def _request(self):
+        d = self._resolver.lookupAddress('localhost')
+        d.addCallback(self._continue)
+        d.addErrback(self._stop)
+
+
+
+def report(requestCount, duration):
+    print (duration*100./requestCount)
+
+def main(reactor):
+    duration = 10
+    concurrency = 10
+
+    controller = DNSServerFactory([hosts.Resolver()])
+    port = reactor.listenUDP(0, DNSDatagramProtocol(controller))
+    client = Client(reactor, port.getHost().port)
+    d = client.run(concurrency, duration)
+    d.addCallbacks(report, err, callbackArgs=(duration,))
+    return d
+
+
+if __name__ == '__main__':
+    # cheat
+    import sys
+    assert sys.argv[1:] == ['-n', '1']
+    driver(main)



More information about the Pypy-commit mailing list