Disabling soft switching results in taking about 150% of the original time
to complete (1 second -> 1.5 seconds). So still much better than gevent.
Also, benchmarks are submitted:
https://github.com/rgalanakis/goless/blob/master/benchmark.py But it
doesn't explain much without understanding how the system is implemented.
Softswitch: True
Benchmarking with backend StacklessBackend:
Channels:
Sync: 0.96s
Async: 0.95s
Buffered(1000): 0.95s
Select:
No default: 3.07s
With default: 1.45s
Softswitch: False
Benchmarking with backend StacklessBackend:
Channels:
Sync: 1.56s
Async: 1.54s
Buffered(1000): 1.55s
Select:
No default: 3.71s
With default: 1.47s
On Fri, May 30, 2014 at 4:28 PM, Richard Tew <[email protected]>
wrote:
> gevent is based on greenlets, which is the hard switching in Stackless.
>
> Stackless also has soft switching.
>
> Maybe rerun your tests with it disabled:
>
>
> http://stackless.readthedocs.org/en/2.7-slp/library/stackless/stackless.html#stackless.enable_softswitch
>
> Cheers,
> Richard.
>
> On 5/31/14, Rob Galanakis <[email protected]> wrote:
> > I was doing some benchmarking of goless under gevent and stackless. The
> > results are pretty astonishing when you do this stuff in the
> interpreter! I
> > will put it on GitHub later today or tomorrow and also write up a blog.
> > It's possible our implementation is just not a good one regarding gevent,
> > but I sort of doubt it. The stackless/gevent specific code is minimal
> > (goless/backends.py) and I don't see anything ugly that we're doing
> there.
> > Maybe something is idiomatically very different, or is gevent performance
> > just not very good?
> > Anyway, it should be easy to profile eventually.
> >
> > Using backend StacklessBackend
> > Benchmarking channels:
> > 0.13s: Sync
> > 0.14s: Async
> > 0.13s: Buffered(1000)
> > Benchmarking select:
> > 0.29s: No default case.
> > 0.15s: With default case.
> >
> > Using backend GeventBackend
> > Benchmarking channels:
> > 0.87s: Sync
> > 0.83s: Async
> > 0.82s: Buffered(1000)
> > Benchmarking select:
> > 1.12s: No default case.
> > 0.16s: With default case.
> >
> >
> > On Tue, May 27, 2014 at 7:17 AM, Kristján Valur Jónsson <
> > [email protected]> wrote:
> >
> >> Well, I started doing some documentation using sphinx the other day but
> >> got sidetracked.
> >>
> >> The current documentation lives in the modules and in the unittests.
> >>
> >> I guess the only fiddly bit about it currently is to start it up.
> >> Currently one has to explicitly get the main loop running. This is
> >> because
> >> stackless _*used*_ to only allow stackless.run() on the main tasklet.
> >> The latest versions don’t.
> >>
> >> Once that restriction is removed, having the main loop run implicitly
> >> much
> >> as the gevent library does (when the Hub singleton is requested) is
> easy.
> >>
> >> I need to put that little brick in there, and then everything will run
> >> smoothly J
> >>
> >>
> >>
> >> K
> >>
> >>
> >>
> >> *From:* [email protected] [mailto:
> >> [email protected]] *On Behalf Of *Aleksandar Radulovic
> >> *Sent:* 23. maí 2014 11:36
> >>
> >> *To:* The Stackless Python Mailing List
> >> *Subject:* Re: [Stackless] goless
> >>
> >>
> >>
> >> Speaking of which, when can we see some more documentation or examples
> on
> >> stacklesslib? ;)
> >>
> >>
> >>
> >> I was fiddling with it the other day and couldn't find any good enough
> >> examples of stacklesslib usage..
> >>
> >>
> >>
> >> Cheers,
> >>
> >> alex
> >>
> >>
> >>
> >> On Tue, May 20, 2014 at 12:13 PM, Kristján Valur Jónsson <
> >> [email protected]> wrote:
> >>
> >> You may want to take a look at the latest version of “stacklesslib”,
> >> particularly the stacklesslib.wait module. We now have “waitable”
> >> channels, so that you can do similar things to
> >>
> >> select, e.g.
> >>
> >>
> >>
> >> c1 = stacklesslib.wait.WaitChannel()
> >>
> >> c2 = stacklesslib.wait.WaitChannel()
> >>
> >> …
> >>
> >> for c in stacklesslib.wait.iwait([c1, c2]):
> >>
> >> if c is c1: percolate()
> >>
> >> elif c is c2: promulgate()
> >>
> >>
> >>
> >> A “WaitChannel” is ready when its balance is non-zero.
> >>
> >> There are also “Sendable” and “Receivable” adapters for WaitChannels to
> >> in
> >> order to wait for either positive or negative balance.
> >>
> >>
> >>
> >> The stacklesslib.util.QueueChannel() is a channel with a fifo queue,
> >> which
> >> can be either unbounded (the default) or have a maximum length. This
> is,
> >> I
> >> believe, similar to Go’s channels.
> >>
> >>
> >>
> >> K
> >>
> >>
> >>
> >>
> >>
> >> *From:* [email protected] [mailto:
> >> [email protected]] *On Behalf Of *Christian Tismer
> >> *Sent:* 18. maí 2014 00:00
> >> *To:* The Stackless Python Mailing List
> >> *Subject:* Re: [Stackless] goless
> >>
> >>
> >>
> >> On 18.04.14 12:46, Kristján Valur Jónsson wrote:
> >>
> >> Hi, I though’t I’d mention here an experimental problem that a few of my
> >> colleagues worked on during PyCon:
> >>
> >> Goless!
> >>
> >> http://goless.readthedocs.org/en/latest/index.html
> >>
> >>
> >>
> >> It also shows how more complex behavior can be built on top of the
> >> relatively simple primitives that stackless provides.
> >>
> >>
> >> (a bit late, but anyway better than never)
> >>
> >> Yes, quite neat thing.
> >> This could be used as an interesting example for the Stackless talk.
> >>
> >> cheers - Chris
> >>
> >> p.s.: actually, I'm studying Go a bit, in order to understand
> >> how they do stuff, how they lock, how they schedule, ...
> >>
> >> --
> >>
> >> Christian Tismer :^) [email protected]
> >>
> >> Software Consulting : http://www.stackless.com/
> >>
> >> Karl-Liebknecht-Str. 121 : http://www.pydica.net/
> >>
> >> 14482 Potsdam : GPG key -> 0xFB7BEE0E
> >>
> >> phone +49 173 24 18 776 fax +49 (30) 700143-0023
> >>
> >>
> >> _______________________________________________
> >> Stackless mailing list
> >> [email protected]
> >> http://www.stackless.com/mailman/listinfo/stackless
> >>
> >>
> >>
> >>
> >>
> >> --
> >> a lex 13 x
> >> http://a13x.net | @a13xnet
> >>
> >> _______________________________________________
> >> Stackless mailing list
> >> [email protected]
> >> http://www.stackless.com/mailman/listinfo/stackless
> >>
> >
>
> _______________________________________________
> Stackless mailing list
> [email protected]
> http://www.stackless.com/mailman/listinfo/stackless
>
_______________________________________________
Stackless mailing list
[email protected]
http://www.stackless.com/mailman/listinfo/stackless