Firstly I'd like to apologise for my lack of responsiveness on this issue. There have been several threads on this forum about it, and it is clearly a major issue for those affected. I don't have anything new in this post - all the information is already contained in this forum - however I'd like to pull it all together and start a discussion to fill in some of the missing details.
To that end, let me reiterate the problem. When workflows get large we see:
- Long load times into VS (minutes)
- Long compile times (minutes)
- Long load times at runtime (seconds)
For (1) the solutions are:
- Split the workflow into "subflows", either SpeechSequenceActivity or SpeechSequentialWorkflowActivity and
- Apply this attribute to SpeechSequenceActivity to avoid it being expanded in parent activities:[Designer(typeof(ActivityDesigner))]
For (2) the solutions is also to split the workflow into subflows and only compiling the part your currently working on. Question - does using SpeechSequentialWorkflowActivity instead of SpeechSequenceActivity reduce the compile time of the top-level workflow?
For (3) the solutions are either:
- Use SpeechSequentialWorkflowActivity instead of SpeechSequenceActivity or
- Use SpeechSequenceActivity but avoid nesting too deeply.
In thread 5448 (http://gotspeech.net/forums/thread/5448.aspx), Marshall Harrison reckons not to go deeper than 2 or 3 nested SpeechSequeunce activities, whereas Brian Campbell is 5 levels with no problems. I've created an experimental workflow with 200 nested SpeechSequeunce activities with no noticiable perf problems compiling or running (though it takes an age to render, so is completely unmanageable). My workflow has nothing but SpeechSequeunce.
The point I am making here is that it is not SpeechSequeunce alone that is the problem, it's also whatever else is in the workflow - i.e. how wide it is as well as how deep.
Question - I'd like to find out from you some data points. What size workflows do you have? And what are your compile times & runtime load times? Please document size as :
- total number of activities
- total depth (i.e. number of activities between the topmost and bottommost)
- how many: SpeechSequence, While and IfElse activities.
Our understanding is that cloning is a big culprit here. If that is the case, then the problems won't be limited to SpeechSequeunce - they would also affect While and IfElse. Question - given a problematic workflow, are there locations in the workflow where, if you add 1 SpeechSequence, it has a significant detrimental impact? If, instead, you add an IfElse, does it have the same detrimental impact?
This posting is provided "AS IS" with no warranties, and confers no rights. Use of included script samples are subject to the terms specified at http://www.microsoft.com/info/cpyright.htm