<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Performance: Tests and Results (oh oh?!) in Alfresco Archive</title>
    <link>https://connect.hyland.com/t5/alfresco-archive/performance-tests-and-results-oh-oh/m-p/87895#M59598</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I know it's a bit blunt, but did you take the time to read the user guide or my Activiti in Action book?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Turning off the history storage saves quite a lot of performance and how you can do this is described in the user guide.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What you call a subTask is exactly an embedded sub process. Did you have sub processes in your own c++ engine as well? There's some additional process instance storage related to sub processes, so you'll always see a decrease in performance when using them.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you want to go purely for performance then yes it would be a good idea to get rid of the call activities and embedded sub processes,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 19 Jan 2012 07:34:21 GMT</pubDate>
    <dc:creator>trademak</dc:creator>
    <dc:date>2012-01-19T07:34:21Z</dc:date>
    <item>
      <title>Performance: Tests and Results (oh oh?!)</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/performance-tests-and-results-oh-oh/m-p/87892#M59595</link>
      <description>I've done some performance testing. :idea: SZENARIO:===========The pure Activiti runtime engine used by a stand-alone application, no server, the in-memory-db, only one thread and a simple flow.And i have a comparison to our own "old" runtime engine (C++ program), which stores it's own configuration</description>
      <pubDate>Wed, 18 Jan 2012 10:22:30 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/performance-tests-and-results-oh-oh/m-p/87892#M59595</guid>
      <dc:creator>luecking</dc:creator>
      <dc:date>2012-01-18T10:22:30Z</dc:date>
    </item>
    <item>
      <title>Re: Performance: Tests and Results (oh oh?!)</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/performance-tests-and-results-oh-oh/m-p/87893#M59596</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It's very difficult to respond to this comparison because you don't mention any details about your own C++ engine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Does it for example keep a history of all executed steps?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Did you try to turn off the history storage?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;You mention you tested a subTask, but what did you do exactly?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;You are right that a sub task is stored separately in the database. But it's also meant for adhoc workflow.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So to summarize, it's very difficult to respond to your performance testing.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Jan 2012 15:01:09 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/performance-tests-and-results-oh-oh/m-p/87893#M59596</guid>
      <dc:creator>trademak</dc:creator>
      <dc:date>2012-01-18T15:01:09Z</dc:date>
    </item>
    <item>
      <title>Re: Performance: Tests and Results (oh oh?!)</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/performance-tests-and-results-oh-oh/m-p/87894#M59597</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;thank you for your response… it's a good start for a discussion.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here are some responses.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Does it for example keep a history of all executed steps?&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;No.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;It is not necessary, because we later use external hardware, which works with own hardware related internal status information.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;They will overwrite all flow related status information, so it will not be necessary to use this feature.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Did you try to turn off the history storage?&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Is it possible?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Do you read about it or do you have examples?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;You mention you tested a subTask, but what did you do exactly?&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;I defined a subTask inside the diagram and the subTask uses one start/end-event and two service-tasks with empty delegate classes.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;You are right that a sub task is stored separately in the database. But it's also meant for adhoc workflow.&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;What do you mean with "adhoc" workflow in this context?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;So to summarize, it's very difficult to respond to your performance testing.&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Yes I now, but somewhere I had to start &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Just a remark:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I do not expect that the Activiti runtime engine will be faster than our specific opimized runtime engine.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;But with a factor of 80 up to 400 the difference is much to big and therefore I'm looking for reasons and solutions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Our whole process takes round about 30 seconds. Currently our engine produces with 100 steps nearly 33 ms.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;If we use Activiti we need between 2600 ms and 13000ms. So the flow takes instead of 30sec now between 33 up to 43 &lt;/SPAN&gt;&lt;STRONG&gt;seconds&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;We would like to use Activiti because of the Designer, the BPMN standard and probably other possibilities (based on BPMN) to extend our workflow logic. Therefore we are able to accept a decrease of performance, but not in such a high number!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;A base solution might be to overwrite the ExportMarshaller, so that he can include external callActions directly into one BPMN.xml file or to unpack all subTasks directly into the BPMN.xml, so that the exported file doesn't contain any subTasks.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;thank you for your questions!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;regards Oliver&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Jan 2012 16:37:54 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/performance-tests-and-results-oh-oh/m-p/87894#M59597</guid>
      <dc:creator>luecking</dc:creator>
      <dc:date>2012-01-18T16:37:54Z</dc:date>
    </item>
    <item>
      <title>Re: Performance: Tests and Results (oh oh?!)</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/performance-tests-and-results-oh-oh/m-p/87895#M59598</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I know it's a bit blunt, but did you take the time to read the user guide or my Activiti in Action book?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Turning off the history storage saves quite a lot of performance and how you can do this is described in the user guide.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What you call a subTask is exactly an embedded sub process. Did you have sub processes in your own c++ engine as well? There's some additional process instance storage related to sub processes, so you'll always see a decrease in performance when using them.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If you want to go purely for performance then yes it would be a good idea to get rid of the call activities and embedded sub processes,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jan 2012 07:34:21 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/performance-tests-and-results-oh-oh/m-p/87895#M59598</guid>
      <dc:creator>trademak</dc:creator>
      <dc:date>2012-01-19T07:34:21Z</dc:date>
    </item>
    <item>
      <title>Re: Performance: Tests and Results (oh oh?!)</title>
      <link>https://connect.hyland.com/t5/alfresco-archive/performance-tests-and-results-oh-oh/m-p/87896#M59599</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;…did you take the time to read the user guide…&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Yes, but it is a lot to read and it is nearly impossible to understand everything in the first 5 minutes &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Is it possible to add a chapter regarding performance?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Possible content:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- History Service&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- SubFlows/callActions&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;- a rough technical overview how the internal technology is working to understand how to solve performance issues in general.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The idea is, that depending on the necessary needs of a project, everyone can compare the increase of performance with the benefit of functionality. &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I know that usual BPMN workflows (mixed with user tasks) do not have performance issues.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;A colleague of mine was testing activiti server-side and they decided to move to an own specific flow engine, also because of performance doing many processes in parallel (main problem was also the subtask).&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I try to use it inside a single threaded client application with limited hardware ressources.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;It seems that we both have problems with the performance outside the user-interactions.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Turning off the history storage saves quite a lot of performance&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Right, we do not need any history. Just pure running through the flow and forget everything… only the final result counts.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I have done some additional testing.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;In case (1) and (2) the benefit of switching off the history will be round about 20-40 ms.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;In case (3) the benefit will be&amp;nbsp; 2-4 ms.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;We are getting faster… step by step &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;What you call a subTask is exactly an embedded sub process. Did you have sub processes in your own c++ engine as well?&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Yes, we have sub processes in our C++ engine. They are designed in various diagrams (like callAction), but at least during init they will be stored at one integrated storage.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Keep in mind that we do not have to store already finished subflows. So our subflows do not have a performance difference between a number of steps inside or outside a subflow.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;There's some additional process instance storage related to sub processes&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;right… that's I'm looking forward to … &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;I just need one return value of a single step, I do need the storage of the whole instance (serialization?). &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Do you know if optimizations at this point are possible?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;so you'll always see a decrease in performance when using them&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;As I wrote before: I can live with a performance decrease, regarding the benefit of activiti, but it must not be to big &lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;If you want to go purely for performance then yes it would be a good idea to get rid of the call activities and embedded sub processes,&lt;/BLOCKQUOTE&gt;&lt;SPAN&gt;Is it possibly a good (optional) extension to the default designer exporter to include the content of external callActions directly into the calling flow (but not as an emebedded subTask!) ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you for interest!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Oliver&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Jan 2012 09:45:28 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-archive/performance-tests-and-results-oh-oh/m-p/87896#M59599</guid>
      <dc:creator>luecking</dc:creator>
      <dc:date>2012-01-19T09:45:28Z</dc:date>
    </item>
  </channel>
</rss>

