[ https://issues.apache.org/jira/browse/SLING-913?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14294895#comment-14294895 ]
Radu Cotescu commented on SLING-913: ------------------------------------ Wouldn't this still need a read operation to be performed, which in this case would be more expensive than reading the last modified property? > Add a cache for pre-compiled scripts > ------------------------------------ > > Key: SLING-913 > URL: https://issues.apache.org/jira/browse/SLING-913 > Project: Sling > Issue Type: New Feature > Components: Scripting > Affects Versions: Scripting Core 2.0.2 > Reporter: Felix Meschberger > Attachments: SLING-913.patch > > > The Java Scripting API provides support for scripting langugages which may > precompile script source and reuse the precompiled scripts: > javax.script.Compilable: May be implemented by a ScriptEngine if > precompilation is > supported > javax.script.CompiledScript: Result of calling the Compilable.compile > method. > The CompiledScript can be called to repeatedly execute the script without the > need for recompilation and thus for improved performance. > The Sling Core Scripting support should make use of this functionality by > maintaining a cache compiled scripts with the following properties > * indexed by script path > * size limited (using LinkedHashMap overwriting the removeEldestEntry > method) > * entries are weak or soft references ot cache entries > A cache entry consists of the following information: > * The CompiledScript instance > * The time of last compilation. this is compared to the last modification > time of the script to decide on whether to recompile > We might probaly also try to add a reference to the script engine > implementation bundle to only use the cache entry if the bundle has not been > stopped since adding the cache entry > Executing the script would then consist of the following steps: > 1 Check the cache of precompiled scripts. if an entry exists and can be > used, use it > 2. if the ScriptEngine is Compilable: > 2a. Compile the script and add it to the cache and use it > 2b. Otherwise have the script engine execute the script -- This message was sent by Atlassian JIRA (v6.3.4#6332)