[Laszlo-dev] For Review: Change 20090130-hqm-Q Summary: support for swf9 incremental compilation
Donald Anderson
dda at ddanderson.com
Fri Jan 30 09:40:10 PST 2009
Comments:
LRUMap is not synchronized. It would be better to use
public static final Map sIncrementalCompilationCache =
Collections.synchronizedMap(new LRUMap(10000));
I'm wondering if there is an mem space issue (or future issue) with
keeping up to 10000 file contents in a map. Keeping an MD5 hash might
give us better growth. Probably not worth doing until we know it's a
problem. (Trying to take the optimization rules to heart) Maybe a
code comment or TODO?
Otherwise approved.
On Jan 30, 2009, at 11:28 AM, Henry Minsky wrote:
> I don't know if we want to merge this change in yet, but I wanted
> to make it up into a review package mostly to checkpoint it for
> possible
> future use.
>
>
> Change 20090130-hqm-Q by hqm at badtzmaru.home on 2009-01-30 11:13:21 EST
> in /Users/hqm/openlaszlo/trunk3
> for http://svn.openlaszlo.org/openlaszlo/trunk
>
> Summary: support for swf9 incremental compilation
>
> New Features:
>
> Bugs Fixed:
>
> Technical Reviewer: dda
> QA Reviewer: ptw
> Doc Reviewer: (pending)
>
> Documentation:
>
> Release Notes:
>
> Details:
>
> This change allows the use of the swf9 flex compiler's 'incremental'
> compilation option.
>
> The flex incremental compiler uses timestamps on the .as files, and a
> cache db file of these timestamps, to determine which files to
> recompile.
>
> So this change makes the script compiler write the intermediate .as
> files to a deterministically named directory
> (tmp/lzswf9/build/path-to-app/) and tries to ensure that only files
> whose content is actually changed are modified on disk.
>
> For speed, this change adds an in-memory cache to the swf9 script
> compiler of every intermediate .as file (which could get large I
> imagine) to decide whether the content has changed on disk.
>
>
> + adds 'compiler.swf9.incremental' flag to lps.properties
>
> - This change doesn't add any way to pass the 'incremental' flag in
> via query arg or command line args to the tag compiler. The only way
> to set it right now is via the lps.properties file.
>
> Tests:
>
> compile a large test app with 300 view-classes (views with
> constraints, that produce anonymous classes). The first compile takes
> 20 seconds, the second incremental compile takes 16 seconds.
>
> About half the time is spent in the tag compiler and script compiler,
> and the other half the time spent in the flex compiler (for the first
> compile).
>
> More specifically when I call just the flex compiler by hand, the
> first compile takes about 9 seconds, and the second (incremental)
> compile takes about 2 seconds.
>
> So something is eating another three seconds, I think it is my code
> which string-compares each cached javascript class file to determine
> whether to rewrite the file on disk.
>
>
> Files:
> M WEB-INF/lps/config/lps.properties
> M WEB-INF/lps/server/src/org/openlaszlo/sc/
> ScriptCompilerInfo.java
> M WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9External.java
> M WEB-INF/lps/server/src/org/openlaszlo/sc/SWF9Generator.java
> M WEB-INF/lps/server/src/org/openlaszlo/sc/Compiler.java
> M WEB-INF/lps/server/src/org/openlaszlo/servlets/responders/
> ResponderCompile.java
> M WEB-INF/lps/server/src/org/openlaszlo/compiler/SWF9Writer.java
> M WEB-INF/lps/server/src/org/openlaszlo/compiler/Parser.java
>
>
> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20090130-hqm-Q.tar
--
Don Anderson
Java/C/C++, Berkeley DB, systems consultant
voice: 617-306-2057
email: dda at ddanderson.com
www: http://www.ddanderson.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.openlaszlo.org/pipermail/laszlo-dev/attachments/20090130/197c5c0f/attachment.html
More information about the Laszlo-dev
mailing list