4 ms·
AppEngine instances, unless they're running in a special backend instance, exist in a special containerized machine. These machines are very slow and don't have
by ariwilson 15y ago
AppEngine instances, unless they're running in a special backend instance, exist in a special containerized machine. These machines are very slow and don't have much RAM - 600 MHz and 128 MB. Based on the source that was posted on the blog, this app was running on a normal instance, as the source did not contain a backends.yaml file.
So it makes sense that a Core 2 Duo running at 2.13 GHz and slow CoffeeScript would be ~2x as fast. My personal experience of running Go code locally (on a Core i5 2500K) versus on a normal AppEngine instance showed a slowdown of around 6x or more.
- yesbabyyes 15y agoI can't argue with that, though I'm running this on just one core (single process). If I was better with the v8 profiler I would check to see how much time it spends in JS land vs C, since node-canvas is all C, as well as the http parser.
- ariwilson 15y agoGo runs on a single core unless you start using channels and/or threading libraries. So it should be apples-to-apples.
- adgar 15y agoGo runs on a single core if you use channels anyway unless you specify an environment variable (something like GO_MAX_PROCS). Not sure about threading libraries since I haven't really considered using them in Go. I'm actually curious what people are using them for in Go - maybe games?
- 4ad 15y agoGOMAXPROCS it is :-). It's a quick fixup, the runtime will eventually schedule on multiple threads without needing the user to specify anything.
- kinofcain 15y agoTrue, but the base http package handles each request on a different goroutine, so your requests could be handled concurrently: http://golang.org/pkg/http/#Server.Serve http://golang.org/pkg/http/#Server.Serve Though adgar is right, for now I believe you need to specify GOMAXPROCS to utilize multiple cores. http://golang.org/pkg/runtime/#GOMAXPROCS http://golang.org/pkg/runtime/#GOMAXPROCS
- yesbabyyes 15y agoI have added the v8 profiler output to the gist. It seems to spend most of it's time in zlib.
- kamens 15y agoThis isn't true any more. They recently announced faster frontend instances with more memory (http://googleappengine.blogspot.com/2011/12/app-engine-161-released.html http://googleappengine.blogspot.com/2011/12/app-engine-161-r...), and I'm willing to bet this has been available internally since long before Thanksgiving. I'd bet money that this app used the beefiest class of frontend instances.
- enneff 15y agoNope, it's just a standard app engine set up.