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

Documentation of performance subjects #16

Open
WilliamParker opened this issue Feb 5, 2017 · 2 comments
Open

Documentation of performance subjects #16

WilliamParker opened this issue Feb 5, 2017 · 2 comments

Comments

@WilliamParker
Copy link
Collaborator

Currently several significant subjects on performance optimization require knowledge of the Rete algorithm and/or Clara's internals to understand. Examples include

  • The benefit of using hash-based joins versus Cartesian joins. This came up recently on the mailing list at https://groups.google.com/forum/#!topic/clara-rules/SbiZA4_3s1U
  • The benefit of inserting facts in a batch all at once, rather than one at a time, particularly when using accumulators. I've seen a case where large numbers of facts that were all fed to the same accumulators were inserted one at a time, leading to significant performance penalties, and the problems with this approach aren't obvious IMO if one is not familiar with Clara's implementation.
  • The ability to use a custom fact-type-fn to gain constant-time dispatch on particular fields of a fact that are hotspots.

I'd like to make this knowledge more accessible in some way. I'm currently leaning toward adding a "Performance Optimization" page under the Advanced Topics section in the right sidebar and linking to pages on these and other relevant topics from that page but I'm open to suggestions.

@WilliamParker
Copy link
Collaborator Author

One tension I see here is how to make this information available without overwhelming users who don't have such performance concerns with information on it. That is why I'm leaning toward adding a single page on performance that then links to further subpages for now, rather than a bunch of new entries under Advanced Topics.

@rbrush
Copy link
Contributor

rbrush commented Feb 8, 2017

A single page under advanced topics, with whatever structure makes sense underneath that, makes sense to me.

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