Comments (1)
To address the problem of repeated parsing of JavaScript expressions during workflow executions, your proposed solution of implementing caching for the parsed Abstract Syntax Tree (AST) of JavaScript expressions is indeed a viable approach to enhance performance. Here are some considerations and steps that could be taken to implement this solution:
-
Expression Caching Mechanism: Introduce a caching layer that stores the AST of parsed JavaScript expressions. This cache should be keyed by a unique identifier for each expression, possibly a hash of the expression text itself.
-
Cache Retrieval and Storage: Modify the JavaScript expression evaluation component to check the cache before parsing an expression. If a cached AST is available, use it directly; otherwise, parse the expression and store the resulting AST in the cache.
-
Cache Invalidation: Implement a strategy for invalidating cached ASTs when the corresponding workflow definition changes. This ensures that the cache does not return stale or incorrect ASTs that do not reflect the latest version of the workflow.
-
Performance Monitoring: After implementing the caching mechanism, monitor the performance of workflow executions to measure the impact of caching on parsing overhead and execution speed.
-
Scalability Considerations: Ensure that the caching solution is scalable and can handle the increased load as the number of workflow executions grows. This may involve using distributed caching mechanisms if the workflow engine operates in a distributed environment.
-
Testing and Validation: Thoroughly test the caching mechanism to ensure that it correctly caches and retrieves ASTs, and that it properly handles cache invalidation. Validate that the cached ASTs are used correctly during workflow execution and that the execution results are consistent with non-cached executions.
By implementing these steps, you can expect to see reduced parsing overhead, improved execution speed, and enhanced scalability of the workflow engine. It's important to carefully design the caching mechanism to avoid potential issues with cache coherence and to ensure that the system remains responsive and accurate as workflow definitions evolve.
This comment was generated by Glime.
from elsa-core.
Related Issues (20)
- [BUG] Nested Workflow Does Not Honor Logging Persistence Settings HOT 1
- [PERF] Enhance Scalability and Simplify Workflow Execution with Proto.Actor HOT 1
- [TEST] Enhance Testing Framework for Extended Integration and E2E Testing HOT 1
- Deprecated reference dlls. HOT 1
- CSharp expression - Access last activity output result HOT 3
- [PERF] Journal Data is logging to redundant information in WorkflowExecutionLogRecords HOT 2
- [ENH] Support TypeName Overriding in IActivityDescriptorModifier Without Breaking Workflow Builder API HOT 1
- Elsa 3 error executing csharp expression - The memory block 'Elsa.Expressions.Models.MemoryBlockReference' does not exist HOT 2
- Elsa 3.1 - csharp script - extend the scripting capabilities to include custom types HOT 1
- [BUG] Http Response activity doesnt send the response before completing. HOT 2
- [BUG] Problem with WriteHttpResponse Activity on External Workflow Start HOT 3
- [ENH] Display Log Persistence Mode in Workflow Instance Viewer
- [BUG]An error in example of c# expression in documentation. HOT 1
- [BUG] Need to clone serializer to adjust options for context
- How to implement repeated execution of HttpEndpoint in Elsa3? HOT 2
- How to make the activity execute automatically after the process is restored? HOT 1
- [BUG] toJson() incorrectly decodes encoded characters HOT 1
- [CHORE] Update packages to latest version
- Migrate Elsa 2 to use AutoMapper 13.0.1 to avoid conflicts HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from elsa-core.