Clojure has a similar problem: works fine on desktop JVMs, but even initialising it takes many seconds on Dalvik.
Clojure has a similar problem: works fine on desktop JVMs, but even initialising it takes many seconds on Dalvik.
If you're hitting slowdowns after initialization, there's a good chance it's reflection, not garbage collection. Type hinting can help if that is the case.
Because of the way that Clojure reuses immutable data structures, it doesn't do as much garbage collection as one might think.
In short, mobile devices are different than laptops/desktops. If you threat them same, your application will suck.
If you don't stop misbehaving and start running my code correctly I'll ((forget to take you out of my pants pocket on laundry day)|(see just how far that hinge will bend)|(take you to the landfill))
None of these work BTW.
Edit: Sorry
Functional programming style tends to generate lots and lots of objects which die very young. Garbage collectors must be tuned for that. At least they should be generational. Mayhaps Dalvik's current GC is not?
Well, there is a lot of Scala code out there doing exactly that.
HotSpot has no problems with short-lived objects in pretty much all its garbage collectors while Dalvik's GC is just a lot less sophisticated and mature.
So I mainly agree with you, but the proposition of
Language allows producing lots of short-lived objects
+ Dalvik sucks
------------
Programs in that language have to be slow
doesn't hold in my opinion, as seen in the differences between Scala and Clojure.I talked about specific examples that I don't even know of. I don't know Scala enough to know whether non-destructive updates are the default. Are they? What about the core libraries?
I agree your proposition in fixed width font does not hold. I was merely asserting this one:
Program P produces lots of short-lived objects
+ Dalvik sucks (or is tuned for long lived-objects)
-------------------------------------------------
Program P have to be slowClojure just assumes the JVM can deal with it, and desktop ones do just fine, hence why no one noticed.