WWF Performance

I created a simple console app to host the workflow engine and run a simple sequential workflow consisting of a while condition, a sequence, a couple of trivial custom activities, and an incrementor to kill the while loop after 10 iterations.

On a fairly powerful developer machine, running a release build, running outside the debugger, performance measurements showed that it took about 1.0 second to load and unload the workflow and another 1.0 second to execute it. This does not include the time to initialize the workflow engine.

For my application I would need these times to get down into the millisecond range. Is the current performance an artifact of the Beta implementation that can be expected to improve dramatically prior to release

Thanks!
Jay



Answer this question

WWF Performance

  • DesX

    We don't publish performance data for unreleased software. This is because we're still working on it and performance at beta isn't a good indicator for performance of the released software.  The end user license agreement (EULA) also doesn't allow you to publish the results of benchmark tests on beta software for the same reason.

    Having said that I don't like to be a wet blanket all the time. So let me give you an idea of the expected performance when we release. Hopefully this should be enough to guide you as to what scenarions you would appropriately use Windows Workflow Foundation for. Consider that the workflow runtime is built on top of the .NET common language runtime. A workflow instance is a .NET type and the workflow runtime adds to that. But at the base we're executing .NET code. We're adding functionality over and above the common language runtime so there's going to be some overhead in that but we compare our technology to other ways that .NET developers can do things.


    Regards,
    Paul

  • DuckPuppy

    Bill,

    My custom activities just wrapped a Console.WriteLine("Hello World") inside the Execute() method.

    Jay


  • dops141441

    Jay, 
    What I was referring to was the cost to write to the console.  Depending on the video card you are using, this my decrease your time. 

    My tests were a bit faster than yours, if I don't write to the console screen for every iteration.

    As for the loading and unloading, those will be about the same as you are seeing now.

    If you help me understand your large scale term and the size that you are planning to do, maybe I can help you a bit more.

    Thanks,

    Bill


  • ooKmonkey

    Hi Bill,

    I don't think the Console.WriteLine calls are a big contributor. When I remove them, the runtime is reduced slightly, but the overall time remains about the same.

    I am evaluating the use of WWF internally within a single application, to direct a sequence of function calls. So basically, if you think of a function foo() that calls functions bar1(), bar2(), and bar3(), I am thinking about replacing function foo() with a workflow foo, and replacing the functions bar1(), bar2(), and bar3() with 3 activities. In other words,

          void foo() {
             bar1();
             bar2();
             bar3();
          }

    becomes a workflow containing a sequence of 3 activity calls.

    If the function foo() currently takes, for example, 0.1 second or less to call, I need similar performance if I replace the call to function foo(), with a call to run workflow foo.

    Thanks,
    Jay


  • Frederic Bellier

    Bill,

    I am not sure what you're saying. In my test it took 2 seconds to run the workflow (on average). About half that was the time to initiate and terminate the workflow.

    Is this typical of whatt we can expect with WWF I need the total time to be down into the milliseconds range. Can the released WWF product be expected to improve performance on a large scale

    Thanks,
    Jay


  • andy0203

    Jay,

    I have a test app here, that does the While first, then the sequence with a code included.
    The code just increments a counter, and then writes out the value to the console.

     i <= 10;

    The writing out to the console time time.  I ran my test app with only printing out the last increment of 10. 
    i>= 10;

    The time was faster.

    Thanks,

    Billz 



  • gamemaker9

    Jay, 

    Without knowing more about your custom activities, I really won't be able to assist to much. 

    I'll set up something here and test, once I get some more information from you.

    Thanks,

    Bill Zunis
    Microsoft

  • WWF Performance