<?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: help - performance improvements in QlikView</title>
    <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626752#M678110</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Henric - &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've noticed you've put up a couple of blog posts on this topic, I'm glad you've shared it as I've found it an extremely useful insightand I think other users would too. Can I just ask, does the same apply to script if() in load statements&amp;nbsp; as for chart expression if statements?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And when it comes to the script control if..then...else..end does it do something similar? I've noticed if I put an "exit script" in an if statement, the loader sometimes picks up later items in the script.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Erica&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 10 Jul 2014 00:35:54 GMT</pubDate>
    <dc:creator />
    <dc:date>2014-07-10T00:35:54Z</dc:date>
    <item>
      <title>help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626734#M678092</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;if i have a line of code like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if(a=b,1,&lt;/P&gt;&lt;P&gt;if(c=f,2,&lt;/P&gt;&lt;P&gt;if(c=g,3,4)))&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;my ?: if first condition is true (i.e.a=b) does the engine (parser) still waste it's time and slow stuff down by checking the remaining condiions?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 24 May 2014 09:54:13 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626734#M678092</guid>
      <dc:creator />
      <dc:date>2014-05-24T09:54:13Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626735#M678093</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;What you are describing is commonly called "short circuiting".&amp;nbsp; I believe the answer is "yes". When the condition is true, the remaining Else conditions are not evaluated. I'm not sure of this though. Perhaps someone from QT development can weigh in on this question. Maybe &lt;A href="https://community.qlik.com/qlik-users/4003"&gt;Henric Cronström&lt;/A&gt;?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-Rob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 25 May 2014 02:44:33 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626735#M678093</guid>
      <dc:creator>rwunderlich</dc:creator>
      <dc:date>2014-05-25T02:44:33Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626736#M678094</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The else part of the expression &lt;EM style="text-decoration: underline;"&gt;is&lt;/EM&gt; indeed evaluated, also when not needed. You can test this yourself by using an input box with a variable, and a pivot table with a (heavy) expression that uses the variable, e.g.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If( vTestVariable = 1, 'simple...', Count( distinct FieldWithManyRecords ) )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note how long time it takes to calculate this when vTestVariable=0, then change the value of the variable to 1. It takes the same amount to calculate.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, there is still room for optimization...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;HIC&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 May 2014 12:37:09 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626736#M678094</guid>
      <dc:creator>hic</dc:creator>
      <dc:date>2014-05-26T12:37:09Z</dc:date>
    </item>
    <item>
      <title>Re: Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626737#M678095</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is very interesting. Would a pick(match()) evaluate any less? For example:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;pick(match('1', '1','2'),'simple',&lt;SPAN style="color: #3d3d3d; font-family: 'courier new', courier;"&gt;Count( distinct FieldWithManyRecords ) &lt;/SPAN&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In this expression, would the count(...) be evaluated as well?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-Rob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 May 2014 15:14:45 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626737#M678095</guid>
      <dc:creator>rwunderlich</dc:creator>
      <dc:date>2014-05-26T15:14:45Z</dc:date>
    </item>
    <item>
      <title>Re: Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626738#M678096</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;thanks Rob, will sleep on it &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 May 2014 18:04:53 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626738#M678096</guid>
      <dc:creator />
      <dc:date>2014-05-26T18:04:53Z</dc:date>
    </item>
    <item>
      <title>Re: Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626739#M678097</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, the Count(...) is evaluated as well, also in your expression. Just tested it...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;HIC&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 26 May 2014 18:46:52 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626739#M678097</guid>
      <dc:creator>hic</dc:creator>
      <dc:date>2014-05-26T18:46:52Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626740#M678098</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for your input Henric. As always, I'm grateful for your insight and transparency.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-Rob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 May 2014 05:07:39 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626740#M678098</guid>
      <dc:creator>rwunderlich</dc:creator>
      <dc:date>2014-05-27T05:07:39Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626741#M678099</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Rob and Henric.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I did not believe you at first as my colleague showed me your post.&lt;/P&gt;&lt;P&gt;My first question was "Could QT really have broken the standard of conditional evaluation?"&lt;/P&gt;&lt;P&gt;Yes they can!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I suspect it has to do with UI responsiveness, to cache all expressions for a better user experience.&lt;/P&gt;&lt;P&gt;But alas, I hate it when application vendors try and help bad programmers and exchange common standardised praxis functionality for ease of use........&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is not the behaviour a programmer would expect.&lt;/P&gt;&lt;P&gt;Normally, conditions exit after a match, but not in this case.&lt;/P&gt;&lt;P&gt;It seems as it evaluates expressions for all conditions no matter what.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tried to replicate the same behaviour with conditional expressions, and gladly it works as one would expect;&lt;/P&gt;&lt;P&gt;The expression is not evaluated if the pre-condition fails.&lt;/P&gt;&lt;P&gt;Do not confuse with conditions in expressions.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt;"&gt;Condition in expression:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt; (&lt;/SPAN&gt;&lt;STRONG style=": ; color: #808080; font-size: 8pt;"&gt;&lt;EM&gt;vVar&lt;/EM&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 8pt;"&gt; = 0, &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 8pt;"&gt;sum&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt;(iCounter&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt;),&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 8pt;"&gt;if&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt; (&lt;/SPAN&gt;&lt;STRONG style=": ; color: #808080; font-size: 8pt;"&gt;&lt;EM&gt;vVar&lt;/EM&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 8pt;"&gt; = 1, &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 8pt;"&gt;count&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 8pt;"&gt;distinct&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt; SSN&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt;),&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 8pt;"&gt;count&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 8pt;"&gt;distinct&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt; SSN&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt;) + &lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 8pt;"&gt;count&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 8pt;"&gt;distinct&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #800000; font-size: 8pt;"&gt;%KEY_SSN_YearMonth&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt;"&gt;)&lt;BR /&gt;)&lt;BR /&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt;"&gt;//Regards&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt;"&gt;Magnus Åvitsland&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt;"&gt;Framsteg.com&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt;"&gt;Stockholm, Sweden&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 May 2014 07:55:25 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626741#M678099</guid>
      <dc:creator>magavi_framsteg</dc:creator>
      <dc:date>2014-05-27T07:55:25Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626742#M678100</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I agree that at first glance one would think that the optimal behaviour must be &lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;not&lt;/STRONG&gt;&lt;/SPAN&gt; to evaluate remaining conditions. But the question is a lot more complicated than that...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The algorithm to calculate an expression is &lt;EM&gt;extremely complex&lt;/EM&gt;. Say, for instance that you have a chart with multiple dimensions: Then the expression should be evaluated for each combination of the dimensional field values, i.e. the Cartesian product of the constituent fields. And this in an &lt;EM&gt;arbitrary data model&lt;/EM&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Further, the argument of the aggregation function could involve fields from different tables, e.g. Sum(A*B) where A and B sit in two tables far from each other. The aggregation then needs to take place in an virtual ntuple created from the Cartesian product of A and B, where the argument of the aggregation function is to be evaluated once per row. But the expression is &lt;EM&gt;not parsed for every row&lt;/EM&gt; - instead (for performance reasons) the expression is converted to assembler code and executed for each row.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, in the general case, a chart involves a double Cartesian product using an arbitrary number of fields in both levels. It is like having a SELECT statement with an arbitrary number of fields in the argument of the aggregation function and an arbitrary number of GROUP BY fields, but without having direct information about the JOINs...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And then we need to add the possibility of any number of scalar functions at any level of the expression; e.g. any number of nested if()-functions. Needless to say, the algorithm is quite complex, and when it was implemented, we just didn't manage to short circuit the evaluation. And I am still today not sure that it would be possible to combine short-circuiting with the assembler code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;HIC&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 27 May 2014 08:39:33 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626742#M678100</guid>
      <dc:creator>hic</dc:creator>
      <dc:date>2014-05-27T08:39:33Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626743#M678101</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Clive, I had a similar issue, but in that my if statement was huge, and I wanted to simplify it (rather than optimise the load)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you use a combination of a lookup table and the alt() function, which takes the first non-null value of a list of values, you can get a similar result.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Lookup:&lt;/P&gt;&lt;P&gt;Load * Inline [&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" width="256"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD height="20" width="64"&gt;a&lt;/TD&gt;&lt;TD width="64"&gt;c&lt;/TD&gt;&lt;TD width="64"&gt;aRes&lt;/TD&gt;&lt;TD width="64"&gt;cRes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;b&lt;/TD&gt;&lt;TD&gt;f&lt;/TD&gt;&lt;TD align="right"&gt;1&lt;/TD&gt;&lt;TD align="right"&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD height="20"&gt;b&lt;/TD&gt;&lt;TD&gt;g&lt;/TD&gt;&lt;TD align="right"&gt;1&lt;/TD&gt;&lt;TD align="right"&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;left join (Main_Data) Load * resident Lookup;&lt;/P&gt;&lt;P&gt;drop table Lookup;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;left join (Main_Data) &lt;/P&gt;&lt;P&gt;Load&lt;/P&gt;&lt;P&gt;SingleKeyField,&lt;/P&gt;&lt;P&gt;alt(aRes,cRes,4) as resultField&lt;/P&gt;&lt;P&gt;resident Main_Data&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here I've assumed that if there are no alternatives to a and c except null. This would yield the same result as your if statement. I have no idea on the impact on performance though.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Erica&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 28 May 2014 05:34:22 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626743#M678101</guid>
      <dc:creator />
      <dc:date>2014-05-28T05:34:22Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626744#M678102</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi Erica,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I suppose the only way to know is to try it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Clive&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 28 May 2014 05:41:20 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626744#M678102</guid>
      <dc:creator />
      <dc:date>2014-05-28T05:41:20Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626745#M678103</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Clive, I'm finding this an interesting post so let me know if there are any performance improvements with that method!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Erica&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 28 May 2014 05:49:56 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626745#M678103</guid>
      <dc:creator />
      <dc:date>2014-05-28T05:49:56Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626746#M678104</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;IMG alt="selsingchip.PNG.png" class="jive-image" src="https://community.qlik.com/legacyfs/online/59884_selsingchip.PNG.png" style="width: 620px; height: 287px;" /&gt;&lt;/P&gt;&lt;P&gt;Like BMW IAM aggressive in my chase for better performance and&amp;nbsp; have hi ambitions in this regard. My (and all) unique ehSIGNature now renders in 0 secs, so ..., on to the next thing (in IT there's no rest for the wicked !)&amp;nbsp; I am determined&amp;nbsp; that every "app screen" will render in 0 secs. If the user (health consumer) selects Lung cancer then the time line uses icons (circles and pyramids) to give an indication of breach (e.g. target wait times exceeded) and how the team performed:&lt;/P&gt;&lt;P&gt;&lt;IMG alt="lungcancer.PNG.png" class="jive-image" src="https://community.qlik.com/legacyfs/online/59891_lungcancer.PNG.png" style="width: 620px; height: 360px;" /&gt;&lt;/P&gt;&lt;P&gt;This pictures (and the one below) is taking &amp;gt;1 sec to render.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG alt="lungcancer2.PNG.png" class="jive-image" height="115" src="https://community.qlik.com/legacyfs/online/59892_lungcancer2.PNG.png" style="height: 115.14054054054054px; width: 119px;" width="119" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 01 Jun 2014 05:17:03 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626746#M678104</guid>
      <dc:creator />
      <dc:date>2014-06-01T05:17:03Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626747#M678105</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The poor'ish performance when when rendering the timeline for a specific chip may be due to the lack of "short circuiting" (apologies if any confusion, but I speak a language which is a mix of Qlik technology and Big Health data, specifically NHS e.g. pathways, journeys, indicators, targets, periods of care, care activities etc.). Consider the list of periods for a Lung cancer pathway:&lt;/P&gt;&lt;P&gt;&lt;IMG alt="sc1.PNG.png" class="jive-image" src="https://community.qlik.com/legacyfs/online/59897_sc1.PNG.png" style="width: 620px; height: 169px;" /&gt;&lt;/P&gt;&lt;P&gt;This picture renders immediately.&lt;/P&gt;&lt;P&gt;The pathway/time line for this is:&lt;/P&gt;&lt;P&gt;&lt;IMG alt="sc2.PNG.png" class="jive-image" src="https://community.qlik.com/legacyfs/online/59898_sc2.PNG.png" style="width: 620px; height: 420px;" /&gt;&lt;/P&gt;&lt;P&gt;This is taking just over 1s to render (not good enough), and I think it's because it's running thru' code for ALL chips (consumer health integrated pathways) not just the Lung cancer, I will try and find the time to test out some of the suggestion made but I don't have the resource (I only need a bit), which when you consider what the NHS budget is is utter madness ... &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 01 Jun 2014 06:35:12 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626747#M678105</guid>
      <dc:creator />
      <dc:date>2014-06-01T06:35:12Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626748#M678106</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Clive, I understand the complexities, I also work in the NHS! Do you work for a trust?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What expressions do you have in the chart?&lt;/P&gt;&lt;P&gt;Erica&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Jun 2014 09:34:00 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626748#M678106</guid>
      <dc:creator />
      <dc:date>2014-06-02T09:34:00Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626749#M678107</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi Erica,&lt;/P&gt;&lt;P&gt;I have worked for Barts and WLMHT in the past, but am currently unwaged and looking for paid work.&lt;/P&gt;&lt;P&gt;Which trust are you working for?&lt;/P&gt;&lt;P&gt;see below trail ...&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;I have dipped into the community to try and get some help, have discovered that with regard to expression code, the general View seems to be that Qlik does not “short circuit”, &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;(I have had some helpful feedback from some very bright people, however in depth understanding of the code is not my “specialty”, my specialty is big data.)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;OL style="list-style-type: lower-alpha;"&gt;&lt;LI&gt;&lt;SPAN style="color: #1f497d;"&gt;e.g. of no short circuit :&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;if(a and b and c,d)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;If a is false it still checks b and c …&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;This is unfortunate.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;The requirement:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL style="list-style-type: disc;"&gt;&lt;LI&gt;&lt;SPAN style="color: #1f497d;"&gt;(see pict below This is myWorld – turning data into pictures &lt;/SPAN&gt;J&lt;SPAN style="color: #1f497d;"&gt;)&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;Look at the hi lited row at the top, what is happening:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;An ambulance journey has come to an end, that ends (QUAntum particle u) the ambulance journey period (which can then be measure and I think has a target of 8 mins),&amp;nbsp; but it also starts (QUAntum particle 2d)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;a wait period in A&amp;amp;E (target 4hours).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;I am searching for the end of an ambulance journey and use the following code:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 9.0pt; font-family: 'Courier New'; color: blue;"&gt;if a=1 and b=2 and substringcount&lt;/SPAN&gt;&lt;SPAN style="font-size: 9.0pt; font-family: 'Courier New'; color: black;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="font-size: 9.0pt; font-family: 'Courier New'; color: maroon;"&gt;signActQUArkPeriodExpandedType&lt;/SPAN&gt;&lt;SPAN style="font-size: 9.0pt; font-family: 'Courier New'; color: black;"&gt;,&lt;/SPAN&gt;&lt;STRONG&gt;&lt;EM style="color: gray; font-size: 9.0pt; font-family: 'Courier New';"&gt;ehSIGN_Part02StartQk&lt;/EM&gt;&lt;/STRONG&gt;&lt;SPAN style="font-size: 9.0pt; font-family: 'Courier New'; color: black;"&gt;)&amp;gt;0 &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;where the first&lt;/SPAN&gt;&lt;SPAN style="font-size: 9.0pt; font-family: 'Courier New'; color: blue;"&gt; substringcount&lt;/SPAN&gt;&lt;SPAN style="color: #1f497d;"&gt; parameter = 2d/CON20130622/A&amp;amp;E#u/CON20130622/AJ &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;and the second &lt;/SPAN&gt;&lt;SPAN style="font-size: 9.0pt; font-family: 'Courier New'; color: blue;"&gt;substringcount&lt;/SPAN&gt;&lt;SPAN style="color: #1f497d;"&gt; parameter = u/CON20130622/AJ&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;This is the only complex bit of code left now (it is repeated multiple times, often a&amp;lt;&amp;gt;1 or b&amp;lt;&amp;gt;1 but the code still gets executed, see above) &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #92d050;"&gt;Can you suggest how to make it more efficient and help to get the render time&amp;lt;1s ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #1f497d;"&gt;Iam keeping the pictures (colours and shapes) simple, what’s behind them is complicated – you can’t get away from this, health is the most complex domain of all !&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG style="color: #1f497d;"&gt;Putt the health consumer first, don’t cause unnecessary confusion, often people don’t want to know the detail, keep the pictures (the apps) simple!! (even if what’s behind them is complex).&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;see the following picture:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;IMG alt="em1.png" class="jive-image" src="https://community.qlik.com/legacyfs/online/59914_em1.png" style="width: 620px; height: 410px;" /&gt;&lt;/P&gt;&lt;P&gt;in 80% of the cases the first parameter only contains 1 part so in this I could do an = which would be much quicker than using the substringcount function ...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Are you working with a data warehouse or a more focused BI data mart?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Jun 2014 09:57:53 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626749#M678107</guid>
      <dc:creator />
      <dc:date>2014-06-02T09:57:53Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626750#M678108</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;@ &lt;A href="https://community.qlik.com/qlik-users/2286"&gt;Rob Wunderlich&lt;/A&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;, &lt;/SPAN&gt;&lt;A href="https://community.qlik.com/qlik-users/111455"&gt;clive spindley&lt;/A&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;, &lt;/SPAN&gt;&lt;A href="https://community.qlik.com/qlik-users/21613"&gt;Magnus Åvitsland&lt;/A&gt;, &lt;A href="https://community.qlik.com/qlik-users/3136"&gt;Ralf Becher&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt; line-height: 1.5em;"&gt;I have discussed the "short circuiting" further with Håkan (the Inventor) now, and the reason why QlikView does't short circuit, is quite simple. Say that you have an expression&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If( &amp;lt;&lt;EM&gt;Condition&lt;/EM&gt;&amp;gt;, &amp;lt;&lt;EM&gt;Expression1&lt;/EM&gt;&amp;gt;, &amp;lt;&lt;EM&gt;Expression2&lt;/EM&gt;&amp;gt; )&lt;/P&gt;&lt;P&gt;that is to be evaluated once per dimensional value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If QlikView had evaluated the chart like a For-Next loop (one loop per dimensional value), then the &lt;EM&gt;Condition&lt;/EM&gt; would first be evaluated and QlikView could choose which &lt;EM&gt;Expression&lt;/EM&gt; then to evaluate. In other words, "short circuiting" would have been the obvious strategy.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But this would mean &lt;EM&gt;&lt;STRONG style="text-decoration: underline;"&gt;many&lt;/STRONG&gt;&lt;/EM&gt; aggregations - many passes over a large data set - and it would be &lt;EM style="text-decoration: underline;"&gt;very&lt;/EM&gt; inefficient. Hence, it is &lt;SPAN style="text-decoration: underline;"&gt;&lt;STRONG&gt;not&lt;/STRONG&gt;&lt;/SPAN&gt; how QlikView evaluates a chart.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Instead, QlikView makes &lt;SPAN style="text-decoration: underline;"&gt;&lt;EM&gt;one pass&lt;/EM&gt;&lt;/SPAN&gt; over the data, calculating &lt;EM&gt;&lt;STRONG&gt;all three&lt;/STRONG&gt;&lt;/EM&gt; aggregations. These are then binned into the different dimensional values, whereupon the &lt;EM&gt;Condition&lt;/EM&gt; is checked and the right &lt;EM&gt;Expression&lt;/EM&gt; is used. Hence, the &lt;EM&gt;Condition&lt;/EM&gt; is evaluated &lt;SPAN style="text-decoration: underline;"&gt;&lt;EM&gt;after&lt;/EM&gt;&lt;/SPAN&gt; the aggregation is made, and short circuiting is &lt;SPAN style="text-decoration: underline;"&gt;&lt;EM&gt;not possible&lt;/EM&gt;&lt;/SPAN&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The only improvement that could be made, is to check whether the &lt;EM&gt;Condition&lt;/EM&gt; is an aggregation or just a check of a variable value, and use short circuiting for the latter case. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;HIC&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Jun 2014 06:58:11 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626750#M678108</guid>
      <dc:creator>hic</dc:creator>
      <dc:date>2014-06-30T06:58:11Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626751#M678109</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That makes sense, one of the advantages of BI (in addition to being able to handle very large volumes of data)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;is the power to aggregate (and eliminate this boring activity from the “to worry about list”).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It does of course mean working with the data at the appropriate level, the bottom level or the most complex &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;depending on your point of view and what excites you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the clarification,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Clive&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 30 Jun 2014 14:34:08 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626751#M678109</guid>
      <dc:creator />
      <dc:date>2014-06-30T14:34:08Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626752#M678110</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Henric - &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I've noticed you've put up a couple of blog posts on this topic, I'm glad you've shared it as I've found it an extremely useful insightand I think other users would too. Can I just ask, does the same apply to script if() in load statements&amp;nbsp; as for chart expression if statements?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And when it comes to the script control if..then...else..end does it do something similar? I've noticed if I put an "exit script" in an if statement, the loader sometimes picks up later items in the script.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Erica&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Jul 2014 00:35:54 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626752#M678110</guid>
      <dc:creator />
      <dc:date>2014-07-10T00:35:54Z</dc:date>
    </item>
    <item>
      <title>Re: help - performance improvements</title>
      <link>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626753#M678111</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If you use an If() function in the script, you have the same problem - in principle. An If() will take some time to evaluate, and if used in a large table it will prolong the script execution. But it is not as bad, since a longer script execution often is acceptable. Further, you don't have any options for the script - you can't use Set Analysis.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The control statement if..then..else is different though: It is executed once, and that's it. As opposed to the If() function that may be executed millions of times - once per record. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;HIC&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 10 Jul 2014 06:31:18 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/help-performance-improvements/m-p/626753#M678111</guid>
      <dc:creator>hic</dc:creator>
      <dc:date>2014-07-10T06:31:18Z</dc:date>
    </item>
  </channel>
</rss>

