[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