+ googol

On Fri, Apr 3, 2009 at 1:43 PM, Mariano Kamp <[email protected]> wrote:
> Romain,
>
>   I am sure you are, but as with the Cupcake issue from the other thread
> with Al, it is not transparent at all. The road map
> (http://source.android.com/roadmap) doesn't contain much and doesn't seem up
> to date.
>
>   And don't get me started on the lack of transparency and predictability
> regarding *all* things Android Market.
>
>   Don't get me wrong though. This is not meant in any way as a personal
> attack against you or in me laying the blame onto you. My point is that the
> communications sucks and that your, Dianne's and JBQ's life would be easier
> as well when someone offical from Google would put more effort into proper
> communications.
>
> Cheers,
> Mariano
>
> On Fri, Apr 3, 2009 at 10:29 AM, Romain Guy <[email protected]> wrote:
>>
>> We're aware of the shortcomings of the current garbage collector and
>> believe me, it's one of the things we'd really love to see improved as
>> soon as possible :)
>>
>> On Fri, Apr 3, 2009 at 2:04 AM, Mariano Kamp <[email protected]>
>> wrote:
>> > Anton, thanks. Very interesting.
>> > On Fri, Apr 3, 2009 at 2:24 AM, Anton <[email protected]> wrote:
>> >>
>> >>    Check out
>> >>
>> >> http://android-developers.blogspot.com/2009/02/track-memory-allocations.html
>> >>
>> >>    Romain Guy points out in this post that the android garbage
>> >> collector cannot optimize small short lived objects.  These are
>> >> exactly the sort of objects that could be created in a physics engine
>> >> when it needs to generate dynamic collision constraints.  A good
>> >> solution in this case is to use a pool of constraint objects because
>> >> they are all going to be the same size/object.  The best solution in
>> >> my mind would be for the compiler to do escape analysis on the objects
>> >> and stack allocate them when it sees that they will never escape the
>> >> function.  I have been told that the Java byte code can't reference an
>> >> object on the stack.  It's possible that the Dalvik byte code can, I
>> >> don't know.
>> >>
>> >>    I don't have a reference for this, but I assume that Dalvik's
>> >> inability to optimize small short lived object comes from the fact
>> >> that it uses a mark and sweep GC.  On all of my profiling, I see the
>> >> GC take at least 100ms to run.  For a game that means you miss from
>> >> three to 10 frames of animation and it makes for a pretty noticeable
>> >> hick up.  And I don't think it's my application that is causing the
>> >> garbage collector to fire.  Unless the OpenGL ES calls do some memory
>> >> allocation, which is entirely possible.  I realize that any background
>> >> task could move to the run queue and take some time away from my
>> >> engine, it just happens to be the garbage collector most of the
>> >> time.  :)
>> >>
>> >>    So the result is that the Garbage collector is problematic for me
>> >> in two ways.  First, it's not optimized to deal with the sort of small
>> >> objects that tend to make for good encapsulations of mathematical
>> >> types (like Fixed point number classes or Vector or Matrix classes).
>> >> And secondly it takes a long time to run when it does garbage collect,
>> >> resulting in dropped frames.
>> >>
>> >>    -Anton
>> >>
>> >> On Apr 2, 3:32 pm, Mariano Kamp <[email protected]> wrote:
>> >> > It's maybe a bit off topic, but how do you know that Android's gc is
>> >> > rudimentary? Have you got a link handy?
>> >> > I only found
>> >> >
>> >> > this:http://developer.android.com/guide/practices/design/performance.html
>> >> >
>> >> > On Thu, Apr 2, 2009 at 11:59 PM, Anton <[email protected]>
>> >> > wrote:
>> >> >
>> >> > >    Shaun, thanks for checking it out.  Yah, I agree that the real
>> >> > > complexity of a physics engine comes from joints and contact
>> >> > > constraints.  The constraints in my demo are simple minimum
>> >> > > distance
>> >> > > constraints.  I have a 2D rigid body physics engine that I'm
>> >> > > thinking
>> >> > > more and more about porting over to Android as well.  This demo was
>> >> > > more of a calibration for myself to see how much computation I can
>> >> > > do,
>> >> > > and what optimizations lead to the largest improvements.  I'll
>> >> > > probably turn it into a fun toy for the Market and then look into
>> >> > > rewriting my rigid body engine for Android.
>> >> >
>> >> > >    Reading through Simpull I noticed that you allocate a new
>> >> > > Vector3f
>> >> > > in your Verlet update routine.  I think that will be a killer on
>> >> > > the
>> >> > > Android platform because of it's rudimentary garbage collector and
>> >> > > limited RAM.  My solution was to allocate an array of fixed point
>> >> > > numbers, four per ball.  Effectively a vector pool that didn't
>> >> > > require
>> >> > > any management because the number of balls never changed.
>> >> >
>> >> > > On Apr 2, 6:31 am, shaun <[email protected]> wrote:
>> >> > > > I took a look at Anton's demo on a G1 device, and I was glad to
>> >> > > > see
>> >> > > > the integration of accelerometer as it really added value.  I
>> >> > > > assume
>> >> > > > the calculations for collision detection and response are fairly
>> >> > > > basic, which allows for that performance.
>> >> >
>> >> > > > Simpull will also provide good performance for a scene of that
>> >> > > > nature
>> >> > > > (all verlet, no joints).  At least I believe it will.  The point
>> >> > > > where
>> >> > > > simpull becomes slow is when a more complex scene is in play with
>> >> > > > 10s
>> >> > > > of objects with many joints connecting some of them.  Since the
>> >> > > > engine
>> >> > > > is all verlet and no rigid body dynamics, joints are one way to
>> >> > > > acheive a similar result, but with a very bad performance hit due
>> >> > > > to
>> >> > > > all the new temporary objects and new calculations.
>> >> >
>> >> > > > I would be super impressed to see a demo like Anton's with rigid
>> >> > > > body
>> >> > > > dynamics involved with at least some rectangles, if not other
>> >> > > > polygons
>> >> > > > and perhaps a joint or two.  That is where the performance
>> >> > > > degrades
>> >> > > > quickly in my experience.
>> >> >
>> >> > > > On Apr 1, 2:45 pm, mscwd01 <[email protected]> wrote:
>> >> >
>> >> > > > > Thanks Lajos for pointing APE out, I hadn't heard of it until
>> >> > > > > now.
>> >> >
>> >> > > > > Unfortunately your link to your Android port is broken, can you
>> >> > > > > mend
>> >> > > > > it as I dont fancy spending another hour porting another
>> >> > > > > library
>> >> > > > > to
>> >> > > > > Android :D
>> >> >
>> >> > > > > Thanks
>> >> >
>> >> > > > > On Mar 31, 9:50 pm, lkelemen <[email protected]> wrote:
>> >> >
>> >> > > > > > Hello everyone,
>> >> >
>> >> > > > > > I was also disappointed with jbox2d's performance so I
>> >> > > > > > checked
>> >> > > > > > APE
>> >> > > > > > (Actionscript Physics Engine) fromhttp://www.cove.org/ape/.
>> >> > > > > > It was converted to java
>> >> > > > > > (http://www.cove.org/ape/java_ape.zip)
>> >> > > > > > so I
>> >> > > > > > started to convert the java version to Android.
>> >> >
>> >> > > > > > The performance is quite OK for 10-20 objects at the first
>> >> > > > > > start
>> >> > > > > > of
>> >> > > > > > the app but if you exit with the back key and restart it form
>> >> > > > > > the
>> >> > > > > > installed copy
>> >> > > > > > (either in the emulator or on the dev phone) then it gets
>> >> > > > > > slower
>> >> > > > > > and
>> >> > > > > > slower with each start. If you restart it from the emulator
>> >> > > > > > (by
>> >> > > > > > reinstalling it) then it is faster again.
>> >> > > > > > Neither the pressed keys are not working (probably it is
>> >> > > > > > because
>> >> > > > > > of
>> >> > > my
>> >> > > > > > poor Android programming knowledge).
>> >> >
>> >> > > > > > Here is a zipped Android project of it. Please experiment
>> >> > > > > > with
>> >> > > > > > it and
>> >> > > > > > send results to here i.e. is it slow for you also after
>> >> > > > > > re-re-re-..
>> >> > > > > > staring?www.kotiposti.net/lkelemen/android/testape2d.zip
>> >> >
>> >> > > > > > thanks
>> >> > > > > > Lajos Kelemen
>> >> >
>> >> > > > > > On Mar 31, 9:26 pm, shaun <[email protected]> wrote:
>> >> >
>> >> > > > > > > I started going down the path of Object pooling.  It seemed
>> >> > > > > > > the
>> >> > > only
>> >> > > > > > > solution when taking an existing engine and making work on
>> >> > > > > > > a
>> >> > > resource
>> >> > > > > > > constrained system like Android on a phone.  Determining
>> >> > > > > > > the
>> >> > > strategy
>> >> > > > > > > for returning objects to the pool proved quite tough for
>> >> > > > > > > me.
>> >> > > > > > >  I
>> >> > > have
>> >> > > > > > > no doubt there are some experts on embedded systems
>> >> > > > > > > programming
>> >> > > with
>> >> > > > > > > tons of experience with object pooling.  We just would be
>> >> > > > > > > too
>> >> > > > > > > lucky
>> >> > > if
>> >> > > > > > > that person(s) was also experienced with Java, physics
>> >> > > > > > > engines
>> >> > > > > > > and
>> >> > > had
>> >> > > > > > > a passion for open source and games!  Is that too much to
>> >> > > > > > > ask?
>> >> > >  LOL!!
>> >> >
>> >> > > > > > > On Mar 31, 12:17 pm, mscwd01 <[email protected]> wrote:
>> >> >
>> >> > > > > > > > Thanks for your feedback Shaun, I too unfortunately think
>> >> > > > > > > > a
>> >> > > bespoke
>> >> > > > > > > > engine will need to be written for Android, which is a
>> >> > > > > > > > real
>> >> > > > > > > > pity
>> >> > > as
>> >> > > > > > > > the iPhone has several physics engines which can easily
>> >> > > > > > > > handle
>> >> > > > > > > > hundreds of objects.
>> >> >
>> >> > > > > > > > Having said that Anton (2nd reply) has said he has an
>> >> > > > > > > > engine
>> >> > > running,
>> >> > > > > > > > it would be nice to see a demo of this if that'd be
>> >> > > > > > > > possible?
>> >> >
>> >> > > > > > > > Clark, i'd definately host any .apk's on my own site, I
>> >> > > > > > > > wouldn't
>> >> > > put
>> >> > > > > > > > it on the marketplace if it wasn't a "finished" app - do
>> >> > > > > > > > people
>> >> > > > > > > > actually do that?!
>> >> >
>> >> > > > > > > > I think i'll stay away from developing games with physics
>> >> > > > > > > > for the
>> >> > > time
>> >> > > > > > > > being and concentrate on something else, I cant see it
>> >> > > > > > > > being
>> >> > > feasible
>> >> > > > > > > > to include it any time soon which is a real pity.
>> >> >
>> >> > > > > > > > On Mar 31, 3:28 pm, shaun <[email protected]> wrote:
>> >> >
>> >> > > > > > > > > I am the author ofsimpull.
>> >> >
>> >> > > > > > > > > Sorry guys for the demo being out of whack forSimpullto
>> >> > > > > > > > > the
>> >> > > Core.
>> >> > > > > > > > > The version of PulpCore that I integratedsimpullwith
>> >> > > > > > > > > did
>> >> > > > > > > > > not
>> >> > > support
>> >> > > > > > > > > Chrome, but you should be able to see it in IE, FF
>> >> > > > > > > > > Safari.
>> >> > > > > > > > >  It
>> >> > > is nice
>> >> > > > > > > > > to take a look at that demo to get a feel for what the
>> >> > > > > > > > > engine
>> >> > > is
>> >> > > > > > > > > capable of, but the performance does not translate over
>> >> > > > > > > > > to
>> >> > > > > > > > > the
>> >> > > fixed
>> >> > > > > > > > > point branch/version ofsimpullwhen running on Android.
>> >> >
>> >> > > > > > > > > I ran tests on both the emulator and the actual device
>> >> > > > > > > > > and
>> >> > > there was a
>> >> > > > > > > > > significant increase in performance because of the
>> >> > > > > > > > > fixed
>> >> > > > > > > > > point
>> >> > > > > > > > > implementation, but I got very frustrated that it still
>> >> > > > > > > > > did not
>> >> > > > > > > > > support the amount of objects in a scene that I
>> >> > > > > > > > > considered
>> >> > > > > > > > > good
>> >> > > for a
>> >> > > > > > > > > physics-based game.  It seemed to handle ~10 objects
>> >> > > > > > > > > moving and
>> >> > > > > > > > > colliding OK.  It has been a while since I was playing
>> >> > > > > > > > > with it,
>> >> > > so I
>> >> > > > > > > > > do not really remember the exact number of objects or
>> >> > > > > > > > > the
>> >> > > > > > > > > frame
>> >> > > rate.
>> >> > > > > > > > > I mostly remember being upset with it.
>> >> >
>> >> > > > > > > > > I am leaving the physics ideas for games out of the
>> >> > > > > > > > > picture
>> >> > > when
>> >> > > > > > > > > thinking Android for now.  Someone would have to write
>> >> > > > > > > > > a
>> >> > > > > > > > > ground
>> >> > > up
>> >> > > > > > > > > engine with all the performance and memory concerns of
>> >> > > > > > > > > Android
>> >> > > in
>> >> > > > > > > > > mind, which was not the case withSimpull.....I created
>> >> > > > > > > > > it
>> >> > > > > > > > > for
>> >> > > > > > > > > applets, then thought to port over to fixed-point for
>> >> > > > > > > > > Android.
>> >> > >  It
>> >> > > > > > > > > works well with small scenes, but certainly not the
>> >> > > > > > > > > staple
>> >> > > engine to
>> >> > > > > > > > > use in my opinion.
>> >> >
>> >> > > > > > > > > Also, Phys2D will not run worth a damn on Android.  I
>> >> > > > > > > > > tried it
>> >> > > and I
>> >> > > > > > > > > even went through some heavy performance tuning.
>> >> > > > > > > > >  Garbage
>> >> > > collection
>> >> > > > > > > > > is the major issue even after all I did.  I seriously
>> >> > > > > > > > > doubt
>> >> > > JBox2D
>> >> > > > > > > > > will run well either.  I'll stick to what I said
>> >> > > > > > > > > earlier,
>> >> > > > > > > > > a
>> >> > > ground-up
>> >> > > > > > > > > solution by someone smarter than me is probably
>> >> > > > > > > > > required.
>> >> >
>> >> > > > > > > > > On Mar 31, 9:49 am, "[email protected]"
>> >> >
>> >> > > > > > > > > <[email protected]> wrote:
>> >> > > > > > > > > > Not tried but if you can provide us with some example
>> >> > > > > > > > > > source
>> >> > > code or
>> >> > > > > > > > > > put something on the market, I'm sure we could take a
>> >> > > > > > > > > > look.
>> >> >
>> >> > > > > > > > > > G1 performance is significantly faster than emulator,
>> >> > > > > > > > > > but
>> >> > > there are
>> >> > > > > > > > > > limitations.
>> >> >
>> >> > > > > > > > > > Particularly with garbage collection and memory
>> >> > > > > > > > > > allocation on
>> >> > > code
>> >> > > > > > > > > > that gets run continuously in loops, so I don't know
>> >> > > > > > > > > > how
>> >> > > optimised
>> >> > > > > > > > > > these physics engines are for this purpose.
>> >> >
>> >> > > > > > > > > > Would be interesting to find out though.
>> >> >
>> >> > > > > > > > > > On Mar 31, 12:52 pm, mscwd01 <[email protected]>
>> >> > > > > > > > > > wrote:
>> >> >
>> >> > > > > > > > > > > Oh I forgot to re-ask...
>> >> >
>> >> > > > > > > > > > > "Has anyone tested Phys2D or JBox2D on an actual
>> >> > > > > > > > > > > device to
>> >> > > see if they
>> >> > > > > > > > > > > run better than on the emulator?
>> >> >
>> >> > > > > > > > > > > I have a feeling the performance will better on a
>> >> > > > > > > > > > > G1
>> >> > > > > > > > > > > than
>> >> > > the emulator
>> >> > > > > > > > > > > for some reason!
>> >> >
>> >> > > > > > > > > > > On Mar 31, 12:51 pm, mscwd01 <[email protected]>
>> >> > > > > > > > > > > wrote:
>> >> >
>> >> > > > > > > > > > > > I did take a look atSimpull, however the demo
>> >> > > > > > > > > > > > application
>> >> > > failed to
>> >> > > > > > > > > > > > run as it relied on some library which wasn't
>> >> > > > > > > > > > > > supplied or
>> >> > > referenced
>> >> > > > > > > > > > > > to - I just got annoyed after spending two days
>> >> > > > > > > > > > > > failing
>> >> > > to get Phys2D
>> >> > > > > > > > > > > > and JBox2D to work in Android and didn't bother
>> >> > > > > > > > > > > > trying to
>> >> > > work out the
>> >> > > > > > > > > > > > problems!
>> >> >
>> >> > > > > > > > > > > > I might give it another look though...
>> >> >
>> >> > > > > > > > > > > > On Mar 30, 10:41 pm, Streets Of Boston <
>> >> > > [email protected]>
>> >> > > > > > > > > > > > wrote:
>> >> >
>> >> > > > > > > > > > > > > I wonder how well this one works on Android:
>> >> >
>> >> > > > > > > > > > > > >  http://code.google.com/p/simpull/
>> >> >
>> >> > > > > > > > > > > > > -- Anton Spaans
>> >> >
>> >> > > > > > > > > > > > > On Mar 30, 4:58 pm, Anton
>> >> > > > > > > > > > > > > <[email protected]>
>> >> > > wrote:
>> >> >
>> >> > > > > > > > > > > > > >     I have a simple 2D physics
>> >> >
>> >> > ...
>> >> >
>> >> > read more »
>> >>
>> >
>> >
>> > >
>> >
>>
>>
>>
>> --
>> Romain Guy
>> Android framework engineer
>> [email protected]
>>
>> Note: please don't send private questions to me, as I don't have time
>> to provide private support.  All such questions should be posted on
>> public forums, where I and others can see and answer them
>>
>>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to