Permissions at the speed of light

 Load 25 000 nodes with a query
 Time needed
Sense/Net 6.0 Beta 1 and Beta 2 21 sec
Sense/Net 6.0 Beta 3
8.7 sec
Sense/Net 6.0 Beta 3.1 3.7 sec

In a nutshell: the latest branch is more than 5 times faster than Beta 1 and Beta 2.

In Sense/Net Content Repository, apart from the usual "open", "modify", etc permissions, we handle "see" permissions as well. If you run a query against the repository you'll get back nodes the user of the query can see. It is even more complex in case of versioned nodes. For example if you are an intranet user checking out a document from another project or department, you may see only the approved, public version. The checked-out draft versions can be seen only by the members of the project or department. When you run a query, you'll get back only the latest version of the node you have access to.


In September 2008 a colleague of mine posted a quick performance test.

Loading 25 000 nodes with proper versions while checking "see" permission on each of them is not common in real life scenarios, but it can give a good picture about performance of Sense/Net Content Repository.

At that time, in Sense/Net 6.0 Beta 1 era, loading 25 000 nodes with a simple query took 21 seconds - which was an amazing result compared to the 12 minutes we could achieve with the in-database CSV parsing we used before. :)

But now, Beta 1 is just history. We released the third beta about a month ago, and the development is still going on at full blast, of course. Sense/Net 6.0 Beta 3 was mostly about cleaning up the API and optimalizing the data layer, so it was just about the time to do some testing again.

Both of us have done the tests on our developer workstations with almost identical configurations. The results are good only for comparision and not for planning and scaling for server installations.

First I made measurements on the Sense/Net 6.0 Beta 3 codebase (which can be downloaded from the Sense/Net site) with the same query as before. The result was 8.7 seconds - it means that loading 25k nodes is more than two times faster in Beta 3 than it was in Beta 1!

But that's not all. During the last few days I have been working on optimizing permission evaluation in the SQL layer. Basically this task was initiated by a customer demand - I had to implement a new feature related to Organizational Units, but I thought if I touch the code, it would be nice to do some optimalizations as well. :) (It's really funny, but actually the feature request of the customer made the further optimalizations possible.)

I've conducted the last performane test with the "Dev branch codebase" (the latest, always-in-development version), and I've found that loading 25k nodes took only 3.7 seconds. It means that the latest build is at least two times faster than Sense/Net 6.0 Beta 3!


We're going to release a new version of Beta 3 ("Beta 3.1" or "Beta 3 Release 2"), which will include these fixes and optimalizations. Stay tuned!

Comments (1) -

Tamás Bíró
5/14/2009 10:43:44 PM #

Good job, man. Smile

Comments are closed

Welcome to the blog!

Sense/Net ECM is ever evolving. Community means the world to us so we want to keep you apprised on what’s happening on our side of the woods. Want to make us happy? Add a comment and tell us what you think!

Month List