Name: | Description: | Size: | Format: | |
---|---|---|---|---|
4.34 MB | Adobe PDF |
Authors
Advisor(s)
Abstract(s)
Jscrambler offers a product named Webpage Integrity, which actively monitors and blocks
client-side behaviors of third-party scripts running in web applications. The product core is
an agent that runs in the webpage, with a rules engine built into it, dictating actions the
agent takes based on rules defined by the customer. Both the agent and its engine are built
with JavaScript.
JavaScript is a weakly-typed scripting language used all over the internet, running in almost
all websites. Being a weakly-typed and extremely flexible language presents some difficulties,
mainly lack of compilation-time optimization. To tackle this, it has a built-in Just-in-time
compiler, which does runtime optimizations based on several heuristics, such as the number
of functions executions, or the data type in its arguments.
JavaScript rules engines are a tricky case of performance. Being a very flexible tool makes
the code also be very flexible, accepting a multitude of arguments and data types, which
leads to the Just-in-time compiler not optimizing the code to its fullest potential.
This work creates a rules engine different from the ones that are freely available for JavaScript.
Instead of interpreting the rules in real time by a very flexible engine, the rules are compiled
into Just-in-time compilation friendly JavaScript code, which has the same functionality.
Based on a realistic test model created from one of Jscrambler’s biggest customers, results
show that compiling rules into JavaScript source code brings a performance boost of up to
60 times. Lastly, results show that the Just-in-time compiler does not bring any significant
performance gains in a pure JavaScript rules engine with Just-in-time compilation friendly
code.
A Jscrambler tem um produto chamado Webpage Integrity, que monitoriza e bloqueia ati vamente comportamentos client-side de scripts de terceiros que executam numa aplicação web. O núcleo do produto é um agente que corre diretamente na aplicação web, com um motor de regras integrado, que dita ações baseado em regras definidas pelo cliente. Tanto o agente como o motor de regras são em JavaScript. JavaScript é uma linguagem de scripting fracamente tipada usada em toda a internet, em quase todos os websites. O facto de ser uma linguagem fracamente tipada e extremamente flexível traz algumas dificuldades, principalmente a falta de otimização em tempo de com pilação. Para combater isto, o JavaScript tem um compilador Just-in-time integrado, que faz otimizações em tempo de execução baseado em várias heurísticas, como o número de execuções de uma função, ou o tipo de dados nos seus argumentos. Os motores de regras em JavaScript trazem algumas dificuldades de performance. Ser uma ferramenta flexível faz também com que o seu código seja flexível, aceitando vários argumentos com tipos de dados diversos, o que leva a que o compilador Just-in-time não otimize o código para o seu potential máximo. Este trabalho cria um motor de regras diferente dos que existem atualmente para uso livre em JavaScript. Em vez de interpretar as regras em tempo real, as regras são compiladas em código JavaScript otimizado para compilação Just-in-time, mantendo a mesma funcionali dade. Baseado num modelo de testes realístico, criado a partir de um dos maiores clientes da Jscrambler, os resultados mostram que compilar as regras para JavaScript trazem uma melhoria de desempenho numa ordem de magnitude de até 60 vezes. Os resultados também demonstram que, num motor de regras compilado para JavaScript com código otimizado para um compilador Just-in-time, o mesmo não traz melhorias de desempenho significativas.
A Jscrambler tem um produto chamado Webpage Integrity, que monitoriza e bloqueia ati vamente comportamentos client-side de scripts de terceiros que executam numa aplicação web. O núcleo do produto é um agente que corre diretamente na aplicação web, com um motor de regras integrado, que dita ações baseado em regras definidas pelo cliente. Tanto o agente como o motor de regras são em JavaScript. JavaScript é uma linguagem de scripting fracamente tipada usada em toda a internet, em quase todos os websites. O facto de ser uma linguagem fracamente tipada e extremamente flexível traz algumas dificuldades, principalmente a falta de otimização em tempo de com pilação. Para combater isto, o JavaScript tem um compilador Just-in-time integrado, que faz otimizações em tempo de execução baseado em várias heurísticas, como o número de execuções de uma função, ou o tipo de dados nos seus argumentos. Os motores de regras em JavaScript trazem algumas dificuldades de performance. Ser uma ferramenta flexível faz também com que o seu código seja flexível, aceitando vários argumentos com tipos de dados diversos, o que leva a que o compilador Just-in-time não otimize o código para o seu potential máximo. Este trabalho cria um motor de regras diferente dos que existem atualmente para uso livre em JavaScript. Em vez de interpretar as regras em tempo real, as regras são compiladas em código JavaScript otimizado para compilação Just-in-time, mantendo a mesma funcionali dade. Baseado num modelo de testes realístico, criado a partir de um dos maiores clientes da Jscrambler, os resultados mostram que compilar as regras para JavaScript trazem uma melhoria de desempenho numa ordem de magnitude de até 60 vezes. Os resultados também demonstram que, num motor de regras compilado para JavaScript com código otimizado para um compilador Just-in-time, o mesmo não traz melhorias de desempenho significativas.
Description
Keywords
JavaScript Performance Rules Engine