DocProject performance

November 23, 2007 |

Recently for an internal project I wanted to generate documentation from my project for other developersDocProjectLogo inhouse to use when using my library.  So I went on my way of selecting a documentation tool for Visual Studio.  As this was an internal project free was a major preference.  After attempting to use several off the shelf trials for my limited purposes they all failed me.  So I moved to opensource and NDoc which I had no luck with and only caused me grief and very undocumented almost seem dead(If there is a solid resource or new project for this please let me know).

During all of this I stumbled across a set of CTP/RC namely Sandcastle with DocProject  from Microsoft and another project on codeplex; as this was an inhouse project a working CTP was more than acceptable.  Both products installed without issue and installation docs were spot on and helpful.

Now this is where it gets weird.  Sandcastle and DocProject(mostly sandcastle from my limited understanding of how this all goes down under the covers) are slow and unperformant.  During my first few attempt to build the documentation I recieved ‘OutOfMemory’ Exceptions and slow build times when successful - both of which are always great to see but my machine was not maxed for resources.  However I stumbled upon a solution bored while waiting for the documentation to generate after some changes to my library…

Solution: This is going to sound nutz but open a dialog in VS while building documentation and you will have no problem and you will see an major speed improvement!  what!?!? yeah I know but the reason actually makes sense and I found more details on the DocProject Codeplex discussion board as I was going to post myself - Doc generation Performance.

From the lead developer of DocProject:

Sorry, but that is funny :)

I haven’t tried it myself but I think the reason for the speed-up is that Build Assembler is being executed on a background-thread and when you open a modal dialog Visual Studio no longer has to process Windows messages for the main UI, which gives the background-thread more processor time. When Build Assembler is finished control is returned to the main UI thread, which is currently blocked by the dialog so it waits for you to close it before starting the next build step, #9.

I don’t think it has anything to do with what version of DocProject you are using, and I don’t think it’s a bug. But if you find that it improves performance on your system then you should try building outside of VS using the DocProject External UI. I’d like to know what the difference is in performance on your system between building within VS and outside.

- Dave

I agree with davedev that it is a quirky side effect but if it gets me results more quickly I’ll take it - glad I stumbled upon it.

Another example of CodePlex doing well for the community.  And thanks to davedev for DocProject.

Further information:

Listen to this podcast Listen to this podcast

Comments

4 Comments so far

  1. Dave on December 4, 2007 11:36 pm

    Thanks for the post. I’m glad that you’ve found DocProject to be useful :)

    FYI, I’m going to work on improving performance so that opening a dialog (lol) is not a requirement ;)

    I’ve addressed performance concerns in this thread:

    https://www.codeplex.com/Thread/View.aspx?ProjectName=DocProject&ThreadId=17263

    - Dave

  2. Ron on December 5, 2007 10:24 am

    Thanks for stopping by Dave!

    I know that SandCastle is planning on a feature to output html help with their next release … do you have any current solution for this in the meantime?

  3. Dave on December 6, 2007 8:57 am

    DocProject has the DocSite Web Application template but it’s ASP.NET. There is no raw HTML version since I personally have no need for one and I feel that ASP.NET adds much more value than raw HTML (which is obvious when using the template ;)

    One or two people have asked me whether DocProject can output an HTML frame, and it doesn’t, so it was nice to hear that it will be an optional output type from Sandcastle itself. I’m not sure how the Sandcastle team will implement it, but I’m assuming that I’ll be able to just add another output type under the Build category and in the Choose Compiled Help wizard step: Help 1.x | Help 2.x | HTML Frame

  4. RonMyers on December 6, 2007 12:30 pm

    Thanks Dave,

    I’ll check out your DocSite Web Application template - I missed this in your docs.

    Thanks again for the prompt responses and keep up the great work.

Name (required)

Email (required)

Website

Speak your mind

    Search

    Search Site Search Web

  • Pages

  • Blogroll

    Nintendo Wiis