You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Felix Meschberger (JIRA)" <ji...@apache.org> on 2009/04/06 12:10:12 UTC

[jira] Created: (SLING-913) Add a cache for pre-compiled scripts

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


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

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (SLING-913) Add a cache for pre-compiled scripts

Posted by "Felix Meschberger (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/SLING-913?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Felix Meschberger updated SLING-913:
------------------------------------

    Description: 
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

  was:
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


> 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
>
> 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 is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.