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.

Remco

--~--~---------~--~----~------------~-------~--~----~
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