Created
June 11, 2010 18:19
-
-
Save teepark/434848 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# vim: fileencoding=utf8:et:sta:ai:sw=4:ts=4:sts=4 | |
import time | |
import greenhouse | |
import eventlet | |
import gevent | |
import gogreen.coro | |
def gr_simple(): | |
greenhouse.pause() | |
greenhouse.pause() | |
def e_simple(): | |
eventlet.sleep() | |
eventlet.sleep() | |
def g_simple(): | |
gevent.sleep() | |
gevent.sleep() | |
def gr_timed(): | |
greenhouse.pause_for(0) | |
greenhouse.pause_for(0) | |
def e_timed(): | |
eventlet.sleep(0) | |
eventlet.sleep(0) | |
def g_timed(): | |
gevent.sleep(0) | |
gevent.sleep(0) | |
class GoGreenWorker(gogreen.coro.Thread): | |
def run(self): | |
pass | |
def gg_simple(): | |
pass | |
def main(iterations=100000): | |
start = time.time() | |
for i in xrange(iterations): | |
greenhouse.schedule(gr_simple) | |
print "greenhouse schedule".ljust(30), (time.time() - start) | |
start = time.time() | |
greenhouse.pause() | |
print "greenhouse simple (first)".ljust(30), (time.time() - start) | |
start = time.time() | |
greenhouse.pause() | |
print "greenhouse simple (second)".ljust(30), (time.time() - start) | |
greenhouse.pause() | |
greenhouse.pause() | |
greenhouse.pause() | |
for i in xrange(iterations): | |
greenhouse.schedule(gr_timed) | |
start = time.time() | |
greenhouse.pause() | |
print "greenhouse timed (first)".ljust(30), (time.time() - start) | |
start = time.time() | |
greenhouse.pause() | |
print "greenhouse timed (second)".ljust(30), (time.time() - start) | |
greenhouse.pause() | |
greenhouse.pause() | |
greenhouse.pause() | |
start = time.time() | |
for i in xrange(iterations): | |
eventlet.spawn(e_simple) | |
print "eventlet spawn".ljust(30), (time.time() - start) | |
start = time.time() | |
eventlet.sleep() | |
print "eventlet simple (first)".ljust(30), (time.time() - start) | |
start = time.time() | |
eventlet.sleep() | |
print "eventlet simple (second)".ljust(30), (time.time() - start) | |
eventlet.sleep() | |
eventlet.sleep() | |
eventlet.sleep() | |
for i in xrange(iterations): | |
eventlet.spawn(e_timed) | |
start = time.time() | |
eventlet.sleep() | |
print "eventlet timed (first)".ljust(30), (time.time() - start) | |
start = time.time() | |
eventlet.sleep() | |
print "eventlet timed (second)".ljust(30), (time.time() - start) | |
eventlet.sleep() | |
eventlet.sleep() | |
eventlet.sleep() | |
start = time.time() | |
for i in xrange(iterations): | |
eventlet.spawn_n(e_simple) | |
print "eventlet spawn_n".ljust(30), (time.time() - start) | |
start = time.time() | |
eventlet.sleep() | |
print "eventlet _n simple (first)".ljust(30), (time.time() - start) | |
start = time.time() | |
eventlet.sleep() | |
print "eventlet _n simple (second)".ljust(30), (time.time() - start) | |
eventlet.sleep() | |
eventlet.sleep() | |
eventlet.sleep() | |
for i in xrange(iterations): | |
eventlet.spawn_n(e_timed) | |
start = time.time() | |
eventlet.sleep() | |
print "eventlet _n timed (first)".ljust(30), (time.time() - start) | |
start = time.time() | |
eventlet.sleep() | |
print "eventlet _n timed (second)".ljust(30), (time.time() - start) | |
eventlet.sleep() | |
eventlet.sleep() | |
eventlet.sleep() | |
start = time.time() | |
for i in xrange(iterations): | |
gevent.spawn(g_simple) | |
print "gevent spawn".ljust(30), (time.time() - start) | |
start = time.time() | |
gevent.sleep() | |
print "gevent simple (first)".ljust(30), (time.time() - start) | |
start = time.time() | |
gevent.sleep() | |
print "gevent simple (second)".ljust(30), (time.time() - start) | |
gevent.sleep() | |
gevent.sleep() | |
gevent.sleep() | |
for i in xrange(iterations): | |
gevent.spawn(g_timed) | |
start = time.time() | |
gevent.sleep() | |
print "gevent timed (first)".ljust(30), (time.time() - start) | |
start = time.time() | |
gevent.sleep() | |
print "gevent timed (second)".ljust(30), (time.time() - start) | |
gevent.sleep() | |
gevent.sleep() | |
gevent.sleep() | |
start = time.time() | |
for i in xrange(iterations): | |
gevent.spawn_raw(g_simple) | |
print "gevent spawn_raw".ljust(30), (time.time() - start) | |
start = time.time() | |
gevent.sleep() | |
print "gevent _raw simple (first)".ljust(30), (time.time() - start) | |
start = time.time() | |
gevent.sleep() | |
print "gevent _raw simple (second)".ljust(30), (time.time() - start) | |
gevent.sleep() | |
gevent.sleep() | |
gevent.sleep() | |
for i in xrange(iterations): | |
gevent.spawn_raw(g_timed) | |
start = time.time() | |
gevent.sleep() | |
print "gevent _raw timed (first)".ljust(30), (time.time() - start) | |
start = time.time() | |
gevent.sleep() | |
print "gevent _raw timed (second)".ljust(30), (time.time() - start) | |
gevent.sleep() | |
gevent.sleep() | |
gevent.sleep() | |
start = time.time() | |
for i in xrange(iterations): | |
gogreen.coro.schedule(GoGreenWorker()) | |
print "gogreen w/classes schedule".ljust(30), (time.time() - start) | |
start = time.time() | |
gogreen.coro.event_loop() | |
print "gogreen w/classes simple".ljust(30), (time.time() - start) | |
start = time.time() | |
for i in xrange(iterations): | |
gogreen.coro.spawn(gg_simple) | |
print "gogreen spawn".ljust(30), (time.time() - start) | |
start = time.time() | |
gogreen.coro.event_loop() | |
print "gogreen spawned simple".ljust(30), (time.time() - start) | |
if __name__ == '__main__': | |
main() | |
# greenhouse schedule 0.174571990967 | |
# greenhouse simple (first) 0.813743114471 | |
# greenhouse simple (second) 0.376886129379 | |
# greenhouse timed (first) 1.59735798836 | |
# greenhouse timed (second) 1.25055003166 | |
# | |
# eventlet spawn 4.5378921032 | |
# eventlet simple (first) 7.87027192116 | |
# eventlet simple (second) 2.26500892639 | |
# eventlet timed (first) 7.0302028656 | |
# eventlet timed (second) 2.28249406815 | |
# | |
# eventlet spawn_n 1.38494706154 | |
# eventlet _n simple (first) 3.84733700752 | |
# eventlet _n simple (second) 2.12895488739 | |
# eventlet _n timed (first) 4.00279998779 | |
# eventlet _n timed (second) 2.13083195686 | |
# | |
# gevent spawn 1.85506606102 | |
# gevent simple (first) 6.1101269722 | |
# gevent simple (second) 0.0108499526978 | |
# gevent timed (first) 5.76555609703 | |
# gevent timed (second) 1.09197211266 | |
# | |
# gevent spawn_raw 0.549421072006 | |
# gevent _raw simple (first) 2.87146806717 | |
# gevent _raw simple (second) 0.945069074631 | |
# gevent _raw timed (first) 2.8474919796 | |
# gevent _raw timed (second) 0.947130918503 | |
# | |
# gogreen w/classes schedule 5.50345993042 | |
# gogreen w/classes simple 1.76240301132 | |
# | |
# gogreen spawn 5.29673886299 | |
# gogreen spawned simple 1.88117599487 | |
# tests were run on | |
# ----------------- | |
# x86_64 Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz | |
# GNU/Linux 2.6.33-ARCH | |
# Python 2.6.5 | |
# greenlet 0.3.1 | |
# greenhouse master 0bdf7934 | |
# eventlet 0.9.9 | |
# gevent 0.12.2 | |
# gogreen 1.0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment