Out of curiosity, I decided to implement "hello world" in the two
official, and one unofficial, languages that run on AppEngine. These
apps make no use of the datastore or any services. They just print
"hello world."

The methodology was simply to run the app three times, waiting for
about a minute for AppEngine to unload my app between each request.

All times are in "wall time." Google typically bills you for "CPU
time," which is greater than wall time. The units are seconds.

--- jruby + rack:
  15.5
  18.0
  13.8
  average: 15.8 seconds

--- python + google's "webapp" micro-framework:
  0.127
  0.170
  0.079
  average: .0.125 seconds

--- java:
  0.911
  !! canceled after 10 seconds with "Request was aborted after waiting
too long to attempt to service your request." !!
  2.4
  4.2
  average: 2.5 seconds not counting the fatal error

In all three cases, the apps respond in about one tenth those times if
they were already loaded.

And yes, Java performance is all over the map! My simple "hello world"
java app was killed by AppEngine. It was merely running the template
code that came with the java SDK.

My test shows that Python on AppEngine is excellent--some of the
fastest web app execution I've seen on any host anywhere. AppEngine's
Java support, on the other hand, should very much be considered a
"preview release" product. When "hello world" is killed by AppEngine
for taking too long to respond, you know there are some major problems
to work out. Bot both java and jruby, once loaded, run at quite
acceptable speeds. Unfortunately, they are reloaded after mere seconds
without hits, and those reloads can sporadically end in 500s. Based on
these numbers, I would not enable billing or AppEngine Java, nor would
I use it for "production" applications at this time. But AppEngine
Java hasn't been around nearly as long as the Python version, so
perhaps this is understandable.


(the java crash error follows)

01-18 08:50PM 42.121 /helloappengine 500 10085ms 0cpu_ms 0kb Mozilla/
5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.7) Gecko/20091221
Firefox/3.5.7 (.NET CLR 3.5.30729),gzip(gfe)
[myip] - - [18/Jan/2010:20:50:52 -0800] "GET /helloappengine HTTP/1.1"
500 0 - "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.7)
Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729),gzip(gfe)" "[myapp]"
W 01-18 08:50PM 52.206
Request was aborted after waiting too long to attempt to service your
request. Most likely, this indicates that you have reached your
simultaneous dynamic request limit. This is almost always due to
excessively high latency in your app. Please see
http://code.google.com/appengine/docs/quotas.html for more details.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.


Reply via email to