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

Performance problem deserializing using BoltGraphClient #324

Open
simendsjo opened this issue Jan 24, 2019 · 6 comments
Open

Performance problem deserializing using BoltGraphClient #324

simendsjo opened this issue Jan 24, 2019 · 6 comments

Comments

@simendsjo
Copy link
Contributor

We've long known that deserializing was a slow part in Neo4jClient, but we have some operations where it's becoming a real challenge.

I notice CypherJsonDeserializer(String) here. Doesn't BoltGraphClient use the binary interface and should avoid Json alltogether? Another issue is that types are treversed many times -- are they not cached or cached at a too low level?

neo4jclient-performance

@cskardon
Copy link
Member

Yes, you are right, there is a pr which covers this, but it causes some breaking changes and I need to fully understand it to pull it in

@simendsjo
Copy link
Contributor Author

Yes, you are right, there is a pr which covers this, but it causes some breaking changes and I need to fully understand it to pull it in

Which PR? I can test it to see if it works for this case and report the performance difference.

@cskardon
Copy link
Member

PR #275 -- I imagine it will need some work to get it to compile atm, or it might not!

I'd be interested to know how much of your code (if any) you had to change to use it..

@simendsjo
Copy link
Contributor Author

I tried this now. I squashed it and then merged into master just to check. Getting it to compile was easy, but it deleted a file we've done bugfixes in, which accounts for two failing tests.

image

@cskardon
Copy link
Member

@simendsjo How have you found the PR? Faster ? Did you have to do code changes?

@simendsjo
Copy link
Contributor Author

I don't remember exactly what happened. I remember trying, and finding I had to make several changes. I think I might have rediscovered problems with a few fixes, which in retrospect might not have been 100% correct..?

Both 593e6ab and 7918f21 pops to mind, but memory might not serve me right here.

I started patching things, but quickly broke the HTTP client when the Bolt client started working, and quickly gave up as I suspected I had to use a lot of time understanding the existing code, the patch, and the Neo4j API.

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

No branches or pull requests

2 participants