Hacker News new | ask | show | jobs
by soc88 5100 days ago
Works without problems in Scala. Maybe Clojure isn't using the available resources efficiently enough?
2 comments

Maybe the Scala examples you think of indulge in quite a bit of destructive updates?

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?

Aye, seems Dalvik's GC is a pretty simple mark-and-sweep.
> Functional programming style tends to generate lots and lots of objects which die very young.

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.
> Well, there is a lot of Scala code out there doing exactly that.

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 slow
Clojure still generates a lot more garbage, especially during bootstrap. This can be seen easily with VisualVM on the desktop, comparing hello world in the two languages.
Scala generates a lot less garbage, by construction. A lot of that has to do with its compilation model, which is a lot closer to Java's than Clojure's is.

Clojure just assumes the JVM can deal with it, and desktop ones do just fine, hence why no one noticed.