Re: [google-appengine] Is the native API really so much faster than JDO and slim3?

2011-06-08 Thread Yasuo Higa
No. Slim3 loads all data eagerly.

Yasuo Higa

On Wednesday, June 8, 2011, Jeff Schnitzer  wrote:
> Ok, I have figured out what's going on.  To put it gently, the
> benchmark is bogus.
>
> The benchmark code for the Low-Level API just gets the size() of the
> collection and doesn't actually examine the data.  GAE (apparently)
> lazily populates Entity objects, so the benchmark cuts out a
> significant chunk of the work.  Objectify eagerly examines the Entity
> data to create POJOs - but your real-world app is going to fetch the
> data from the Entity too.  Presumably Slim3 lazily passes through to
> the low-level size() method.  This is unrealistic; if you wanted a
> count, you would use the query's count() method.
>
> When you iterate the result set and include an Entity.getProperty()
> call, Objectify's 100ms overhead fades into the natural (+/- 500ms)
> variance.
>
> Sloppy work.
>
> Jeff
>
> On Wed, Jun 8, 2011 at 1:44 AM, Jeff Schnitzer  wrote:
>> H.  I just whipped up a test app that uses a mock
>> AsyncDatastoreService to provide a set of 10,000 Entity objects to
>> Objectify, thus purely measuring the overhead of Objectify.  It
>> consistently transforms 10,000 entities into POJOs (just long id,
>> String value) in 100ms on both my laptop and on the production
>> servers.
>>
>> I'm not quite sure what's going on here, but it's not an issue with 
>> reflection.
>>
>> Jeff
>>
>> On Tue, Jun 7, 2011 at 8:51 PM, Yasuo Higa  wrote:
>>> I added an objectify sample into the performance samples:
>>> http://slim3demo.appspot.com/performance/
>>>
>>> One result:
>>> The number of entities: 1
>>> low-level API:get: 1276 millis
>>> Slim3: 1327 millis
>>> Objectify: 3028 millis
>>> JDO: 3222 millis
>>>
>>> I have not profiled yet.
>>> But I know java runtime reflections are very very slow on production server,
>>> so slim3 creates the mapping logic between a model and an entity
>>> as the source code when compiling.
>>>
>>> Yasuo Higa
>>>
>>> On Wed, Jun 8, 2011 at 10:18 AM, Ikai Lan (Google)  
>>> wrote:
 I doubt the low-level API is significantly faster than JDO (have not
 profiled, so can't tell you for sure). JDO just dispatches to low-level and
 does serialization/deserialization. That should really be a very small part
 of the entire operation.
 Reasons to use the low-level API include:
  - it maps best to how the datastore works (schemaless)
  - you always get new features the fastest (async datastore API)
 That being said, the Slim3 and Objectify projects move pretty quickly and
 add features almost as quickly as we do. They're one level removed from the
 schemaless nature of the datastore, but this fits better with the 95% use
 case.

 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog: http://googleappengine.blogspot.com
 Twitter: http://twitter.com/app_engine
 Reddit: http://www.reddit.com/r/appengine


 On Wed, Jun 8, 2011 at 8:07 AM, Dennis Peterson 
 wrote:
>
> That makes more sense, thanks.
> I also found this online benchmark of JDO and LL, which has similar
> results:
> http://gaejava.appspot.com/
>
> On Tue, Jun 7, 2011 at 8:03 PM, Anders  wrote:
>>
>> Yeah, that's what I suspected. Lazy loading. With the modification Slim3
>> is almost as fast as the native API. Strange that JDO is so slow. I 
>> thought
>> most of the time was for accessing the datastore, not for running the 
>> Java
>> bytecode.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Google App Engine" group.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msg/google-appengine/-/dHRvXzBkWVNkUndK.
>> To post to this group, send email to google-appengine@googlegroups.com.
>> To unsubscribe from this group, send email to
>>

-- 
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-appengine@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.



Re: [google-appengine] Is the native API really so much faster than JDO and slim3?

2011-06-08 Thread Yasuo Higa
No. Slim3 loads all data eagerly.

Yasuo Higa

On Wednesday, June 8, 2011, Jeff Schnitzer  wrote:
> Ok, I have figured out what's going on.  To put it gently, the
> benchmark is bogus.
>
> The benchmark code for the Low-Level API just gets the size() of the
> collection and doesn't actually examine the data.  GAE (apparently)
> lazily populates Entity objects, so the benchmark cuts out a
> significant chunk of the work.  Objectify eagerly examines the Entity
> data to create POJOs - but your real-world app is going to fetch the
> data from the Entity too.  Presumably Slim3 lazily passes through to
> the low-level size() method.  This is unrealistic; if you wanted a
> count, you would use the query's count() method.
>
> When you iterate the result set and include an Entity.getProperty()
> call, Objectify's 100ms overhead fades into the natural (+/- 500ms)
> variance.
>
> Sloppy work.
>
> Jeff
>
> On Wed, Jun 8, 2011 at 1:44 AM, Jeff Schnitzer  wrote:
>> H.  I just whipped up a test app that uses a mock
>> AsyncDatastoreService to provide a set of 10,000 Entity objects to
>> Objectify, thus purely measuring the overhead of Objectify.  It
>> consistently transforms 10,000 entities into POJOs (just long id,
>> String value) in 100ms on both my laptop and on the production
>> servers.
>>
>> I'm not quite sure what's going on here, but it's not an issue with 
>> reflection.
>>
>> Jeff
>>
>> On Tue, Jun 7, 2011 at 8:51 PM, Yasuo Higa  wrote:
>>> I added an objectify sample into the performance samples:
>>> http://slim3demo.appspot.com/performance/
>>>
>>> One result:
>>> The number of entities: 1
>>> low-level API:get: 1276 millis
>>> Slim3: 1327 millis
>>> Objectify: 3028 millis
>>> JDO: 3222 millis
>>>
>>> I have not profiled yet.
>>> But I know java runtime reflections are very very slow on production server,
>>> so slim3 creates the mapping logic between a model and an entity
>>> as the source code when compiling.
>>>
>>> Yasuo Higa
>>>
>>> On Wed, Jun 8, 2011 at 10:18 AM, Ikai Lan (Google)  
>>> wrote:
 I doubt the low-level API is significantly faster than JDO (have not
 profiled, so can't tell you for sure). JDO just dispatches to low-level and
 does serialization/deserialization. That should really be a very small part
 of the entire operation.
 Reasons to use the low-level API include:
  - it maps best to how the datastore works (schemaless)
  - you always get new features the fastest (async datastore API)
 That being said, the Slim3 and Objectify projects move pretty quickly and
 add features almost as quickly as we do. They're one level removed from the
 schemaless nature of the datastore, but this fits better with the 95% use
 case.

 Ikai Lan
 Developer Programs Engineer, Google App Engine
 Blog: http://googleappengine.blogspot.com
 Twitter: http://twitter.com/app_engine
 Reddit: http://www.reddit.com/r/appengine


 On Wed, Jun 8, 2011 at 8:07 AM, Dennis Peterson 
 wrote:
>
> That makes more sense, thanks.
> I also found this online benchmark of JDO and LL, which has similar
> results:
> http://gaejava.appspot.com/
>
> On Tue, Jun 7, 2011 at 8:03 PM, Anders  wrote:
>>
>> Yeah, that's what I suspected. Lazy loading. With the modification Slim3
>> is almost as fast as the native API. Strange that JDO is so slow. I 
>> thought
>> most of the time was for accessing the datastore, not for running the 
>> Java
>> bytecode.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Google App Engine" group.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msg/google-appengine/-/dHRvXzBkWVNkUndK.
>> To post to this group, send email to google-appengine@googlegroups.com.
>> To unsubscribe from this group, send email to
>>

-- 
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-appengine@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.



[google-appengine] Is the native API really so much faster than JDO and slim3?

2011-06-06 Thread DennisP
I'm looking at this online demo:
http://slim3demo.appspot.com/performance/

Sample run:
The number of entities: 1
low-level API:get: 2 millis
Slim3: 2490 millis
JDO: 6030 millis

Is the low-level API really that much faster?

-- 
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-appengine@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.