On Feb 11, 4:36 am, "Remco van 't Veer" <rwvtv...@gmail.com> wrote:
> On Tue, Feb 10, 2009 at 1:57 PM, Remco van 't Veer <rwvtv...@gmail.com> wrote:
>
>
>
> > On Tue, Feb 10, 2009 at 1:33 PM, Rich Hickey <richhic...@gmail.com> wrote:
> >> On Feb 10, 3:47 am, "Remco van 't Veer" <rwvtv...@gmail.com> wrote:
> >>> Hi Rich,
>
> >>> I've been working on getting clojure in a more usable state for android
> >>> [1].  One of the challenges was to speedup startup time.  A lot of
> >>> time is spend in the lisp-reader because all constants are stored as
> >>> lisp expressions.  I've replace most of this code by a more direct
> >>> approach; emitting calls to Symbol.intern, RT.var, RT.vector etc.
> >>> These changes make loading core about 3 to 4 times faster.
>
> >> I am interested in this. The current constant serialization is just
> >> the simplest thing to do, and had added utility for any text-based
> >> transfer. I held off on binary/bytecode serialization because I hadn't
> >> yet decided how to make that extensible. I guess it's not the worst
> >> thing if the set of frequently used known types gets special handling
> >> with the print-dup fallback.
>
> >>> Are you interested in this patch?  Should I open an issue on the
> >>> project site?
>
> >> Sure, thanks. It's important that the mechanism preserve the actual
> >> types, so sections like this bit (in emitValue):
>
> >> if (value instanceof List)
>
> >> still need refinement.
>
> > I'll work on preserving the exact type for the common cases and will
> > open an issue with patch when I got it working.
>
> Working on this I noticed a lot of meta data is discarded by to
> current, serialize everything to lisp expressions, code when compiling
> core.clj.  This happens because the constants are emitted while core
> is loaded and the writer depends on core-print which does write meta
> data for a couple of types.
>
> Isn't this a problem?  Rich can you confirm?  Or should the constants
> in AOT compiled code not contain meta data at all?  Seems very
> unlikely!  If it doesn't need meta data, why not?
>
> Emitting meta data properly might even allow one to get rid of
> *print-initialized* which seems hackish to me.

Yes, there are gaps in metadata retention, and *print-initialized* is
definitely a bootstrap thing I'd love to lose.

Rich

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

Reply via email to