I'd like to see answers to some of the questions he raises.
Why does Pike emphasize the performance of Go's goroutine creation and channel communication when it seems to be slower than Stackless and definitely is not an order of magnitude faster?
Why indeed? Please answer us Google Engineers!
Just for fun, I ran the benchmarks myself, and added a benchmark for Fibra, because I wrote it, and I know that it is pretty slow. :-)
wdgt:tmp simon$ time ./6.out
wdgt:tmp simon$ time python sgo.py
wdgt:tmp simon$ time python fgo.py
This is the Fibra benchmark code. It's almost the same as the Stackless example, except for the ugly "yield" statements.
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-n", type="int", dest="num_tasklets", help="how many", default=100000)
def f(left, right):
x = yield right.pop()
options, args = parser.parse_args()
leftmost = fibra.Tube()
left, right = None, leftmost
for i in xrange(options.num_tasklets):
left, right = right, fibra.Tube()
x = yield leftmost.pop()
schedule = fibra.schedule()
The results are: Stackless fast, Go slow, Fibra... forget it.