Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Experimental VM-based implementation #75

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open

Conversation

larsga
Copy link
Collaborator

@larsga larsga commented May 31, 2019

This is an experiment to see if a VM that uses an efficient representation of JSON as an array of ints can be faster than the AST-based implementation that works on Jackson JsonNode objects.

So far, experiments indicate that object->object transforms can be about 40% faster.

This approach also has the benefit of being independent of Jackson. That is, the input no longer has to be parsed by Jackson, and it doesn't even really need to be JSON. Same with the output.

A lot more work would be needed to support all of JSLT on this VM, particularly as this branch doesn't even have an AST->bytecode compiler. Performance is likely to drop somewhat as more of JSLT is supported, but on the other hand there must be quite a lot of unexploited optimization opportunities in this code.

So work on this branch may continue in the future, as much for strategic reasons as for the pure performance gain.

Thoughts, comments, feedback all welcome.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant