<?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 VBScript FunctionCalls VS QlikView CallSub in QlikView</title>
    <link>https://community.qlik.com/t5/QlikView/VBScript-FunctionCalls-VS-QlikView-CallSub/m-p/391162#M701809</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've found a great difference between vbscript loop execution and script loop execution.&lt;/P&gt;&lt;P&gt;And ...&lt;/P&gt;&lt;P&gt;The fastest is not what i thougth !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Let's try :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the module part , create a function doing an interation and some work:&lt;/P&gt;&lt;P&gt;In the loadscript : have a log function , have a QlikView Script loop sub, disable writing to the log&lt;/P&gt;&lt;P&gt;Call the vbScript loop Function&lt;/P&gt;&lt;P&gt;Call the QlikView Script loop Function&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;rem Module Function&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;function fBoucle ( vIndice, vDebut, vFin, vPas )&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;vNbCellules = Clng (( vFin-vDebut)/vPas)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;execute "dim vTmpArray ( " &amp;amp; vNbCellules &amp;amp; ")"&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for vIndice = vDebut To vFin step vPas&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vTmpArray( ( vIndice - vDebut ) / vPas ) = vIndice&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; next&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;fBoucle=join(vTmpArray,"#")&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;fBoucle="TestWithWorkDone"&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt; end function&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;//LogFunction:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;sub trace_temps(Message )&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;let vTemps=Date( Now(),'YYYYMMDD hh:mm:ss');&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; trace $(vTemps) : $(Message);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;end sub&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;//QlikView Loop Sub&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;sub ssBoucle ( vIndice, vDebut, vFin, vPas )&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;let az=0;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for vIndice = vDebut To vFin step vPas&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; az= vIndice;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; next;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;end sub;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;//About 2 second for 10000000 iterations&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;call trace_temps('Debut fBoucle' );&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;let tmp= fBoucle ( 0, 1, 100000, 1);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;trace $(tmp);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;call trace_temps('Fin fBoucle' );&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;//About 4 second for 25000 iterations&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;call trace_temps('Debut ssBoucle' );&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;call ssBoucle ( 0, 1, 25000, 1);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;call trace_temps('Fin ssBoucle' );&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;When the work is different, and we can't do the same, it's sound to me that calling vbscript function is not so bad&lt;/EM&gt; &lt;IMG src="https://community.qlik.com/legacyfs/online/emoticons/wink.png" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 08 Oct 2012 13:20:25 GMT</pubDate>
    <dc:creator />
    <dc:date>2012-10-08T13:20:25Z</dc:date>
    <item>
      <title>VBScript FunctionCalls VS QlikView CallSub</title>
      <link>https://community.qlik.com/t5/QlikView/VBScript-FunctionCalls-VS-QlikView-CallSub/m-p/391162#M701809</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I've found a great difference between vbscript loop execution and script loop execution.&lt;/P&gt;&lt;P&gt;And ...&lt;/P&gt;&lt;P&gt;The fastest is not what i thougth !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Let's try :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the module part , create a function doing an interation and some work:&lt;/P&gt;&lt;P&gt;In the loadscript : have a log function , have a QlikView Script loop sub, disable writing to the log&lt;/P&gt;&lt;P&gt;Call the vbScript loop Function&lt;/P&gt;&lt;P&gt;Call the QlikView Script loop Function&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;rem Module Function&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;function fBoucle ( vIndice, vDebut, vFin, vPas )&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;vNbCellules = Clng (( vFin-vDebut)/vPas)&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;execute "dim vTmpArray ( " &amp;amp; vNbCellules &amp;amp; ")"&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for vIndice = vDebut To vFin step vPas&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vTmpArray( ( vIndice - vDebut ) / vPas ) = vIndice&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; next&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;fBoucle=join(vTmpArray,"#")&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;fBoucle="TestWithWorkDone"&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt; end function&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;//LogFunction:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;sub trace_temps(Message )&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;let vTemps=Date( Now(),'YYYYMMDD hh:mm:ss');&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; trace $(vTemps) : $(Message);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;end sub&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;//QlikView Loop Sub&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;sub ssBoucle ( vIndice, vDebut, vFin, vPas )&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;let az=0;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for vIndice = vDebut To vFin step vPas&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; az= vIndice;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; next;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;end sub;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;//About 2 second for 10000000 iterations&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;call trace_temps('Debut fBoucle' );&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;let tmp= fBoucle ( 0, 1, 100000, 1);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;trace $(tmp);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;call trace_temps('Fin fBoucle' );&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;//About 4 second for 25000 iterations&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;call trace_temps('Debut ssBoucle' );&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;call ssBoucle ( 0, 1, 25000, 1);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;call trace_temps('Fin ssBoucle' );&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;When the work is different, and we can't do the same, it's sound to me that calling vbscript function is not so bad&lt;/EM&gt; &lt;IMG src="https://community.qlik.com/legacyfs/online/emoticons/wink.png" /&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Oct 2012 13:20:25 GMT</pubDate>
      <guid>https://community.qlik.com/t5/QlikView/VBScript-FunctionCalls-VS-QlikView-CallSub/m-p/391162#M701809</guid>
      <dc:creator />
      <dc:date>2012-10-08T13:20:25Z</dc:date>
    </item>
  </channel>
</rss>

