Performance: Is Loop,Parse,CSV faster than stacked duplicate lines? Topic is solved

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
DRocks
Posts: 565
Joined: 08 May 2018, 10:20

Performance: Is Loop,Parse,CSV faster than stacked duplicate lines?

19 Sep 2018, 14:39

hi guys, like the title says,

I'm wondering if using a Loop Parse CSV is Faster and more efficient than duplicating lines the number of times you would loop them?

This is a CSV loop parse example which I used to do on seperate lines for each variables:

Code: Select all

DEPENSES_MONTANT_W_RATIO:=		15 ;%
DEPENSES_CODETAXE_W_RATIO:=		10 ;%
DEPENSES_TPS_W_RATIO:=			10 ;%
DEPENSES_TVQ_W_RATIO:=			10 ;%
DEPENSES_DESCRIPTION_W_RATIO:=	30 ;%
DEPENSES_CATEGORIE_W_RATIO:=	25 ;%
TABLE_COLOMN_NAMES:= "MONTANT,CODETAXE,TPS,TVQ,DESCRIPTION,CATEGORIE"
loop, Parse, % TABLE_COLOMN_NAMES, CSV ; Parse This String at "," 
{
	DEPENSES_%A_LoopField%_W:=	ROUND(((DEPENSES_%A_LoopField%_W_RATIO*TABLE_PROPORTIONS)/100*6))
	DEPENSES_%A_LoopField%_X:=	TABLE_X_MARGIN + THIS_PREVIOUS_CONTROL_X
	THIS_PREVIOUS_CONTROL_X:=THIS_PREVIOUS_CONTROL_X + DEPENSES_%A_LoopField%_W + TABLE_X_INCREMENT
}
And this is how it is without a loop.. I repeat6 times the same formula but for 6 different variables

Code: Select all

	DEPENSES_MONTANT_W_RATIO:=15,	DEPENSES_MONTANT_W:=ROUND(((DEPENSES_MONTANT_W_RATIO*TABLE_PROPORTIONS)/100*6))
	DEPENSES_MONTANT_X:=TABLE_X_MARGIN + THIS_PREVIOUS_CONTROL_X, THIS_PREVIOUS_CONTROL_X:=THIS_PREVIOUS_CONTROL_X + DEPENSES_MONTANT_W + TABLE_X_INCREMENT
	
	DEPENSES_CODETAXE_W_RATIO:=10, DEPENSES_CODETAXE_W:=ROUND(((DEPENSES_CODETAXE_W_RATIO*TABLE_PROPORTIONS)/100*6)) ; EN POURCENTAGE DE LA TABLE TOTALE
	DEPENSES_CODETAXE_X:= 	TABLE_X_MARGIN + THIS_PREVIOUS_CONTROL_X, THIS_PREVIOUS_CONTROL_X:=THIS_PREVIOUS_CONTROL_X + DEPENSES_CODETAXE_W + TABLE_X_INCREMENT
	
	DEPENSES_TPS_W_RATIO:=10, DEPENSES_TPS_W:=ROUND(((DEPENSES_TPS_W_RATIO*TABLE_PROPORTIONS)/100*6)) ; EN POURCENTAGE DE LA TABLE TOTALE
	DEPENSES_TVQ_W_RATIO:=10, DEPENSES_TVQ_W:=ROUND(((DEPENSES_TVQ_W_RATIO*TABLE_PROPORTIONS)/100*6)) ; EN POURCENTAGE DE LA TABLE TOTALE
	DEPENSES_TPS_X:=TABLE_X_MARGIN + THIS_PREVIOUS_CONTROL_X, THIS_PREVIOUS_CONTROL_X:=THIS_PREVIOUS_CONTROL_X + DEPENSES_TPS_W + TABLE_X_INCREMENT, DEPENSE_TPS_TVQ_LINK_X:= THIS_PREVIOUS_CONTROL_X
	DEPENSES_TVQ_X:=TABLE_X_MARGIN + THIS_PREVIOUS_CONTROL_X, THIS_PREVIOUS_CONTROL_X:=THIS_PREVIOUS_CONTROL_X + DEPENSES_TVQ_W + TABLE_X_INCREMENT
	
	DEPENSES_DESCRIPTION_W_RATIO:=30, DEPENSES_DESCRIPTION_W:=ROUND(((DEPENSES_DESCRIPTION_W_RATIO*TABLE_PROPORTIONS)/100*6)) ; EN POURCENTAGE DE LA TABLE TOTALE
	DEPENSES_DESCRIPTION_X:=TABLE_X_MARGIN + THIS_PREVIOUS_CONTROL_X, THIS_PREVIOUS_CONTROL_X:=THIS_PREVIOUS_CONTROL_X + DEPENSES_DESCRIPTION_W + TABLE_X_INCREMENT
	
	DEPENSES_CATEGORIE_W_RATIO:=25, DEPENSES_CATEGORIE_W:=ROUND(((DEPENSES_CATEGORIE_W_RATIO*TABLE_PROPORTIONS)/100*6)) ; EN POURCENTAGE DE LA TABLE TOTALE
	DEPENSES_CATEGORIE_X:=TABLE_X_MARGIN + THIS_PREVIOUS_CONTROL_X, THIS_PREVIOUS_CONTROL_X:=THIS_PREVIOUS_CONTROL_X + DEPENSES_CATEGORIE_W + TABLE_X_INCREMENT
both do the same result but with Loop its easier to read.

which one is faster? and how do you actually test script performance?

thanks in advance :D
garry
Posts: 3763
Joined: 22 Dec 2013, 12:50

Re: Performance: Is Loop,Parse,CSV faster than stacked duplicate lines?  Topic is solved

20 Sep 2018, 02:28

maybe with a_tickcount test time

Code: Select all

;- count and show time in ms when loop finished
#warn
setbatchlines,-1      ;- < faster
i=0
e:=""
tot=1000000
SplashTextOn, 400, 40, ,Begin Count =%tot%
begin1:=a_tickcount
loop,%tot%
  {
  i++
  ;- do something
  e .= i . "`r`n"
  }
e=  
delta1:=a_tickcount - begin1
SplashTextOff
msgbox, 262208,a_tickcount-TEST,Count ended - I=%i%`nDelta1=%delta1%-ms
exitapp
Last edited by garry on 20 Sep 2018, 08:50, edited 1 time in total.
DRocks
Posts: 565
Joined: 08 May 2018, 10:20

Re: Performance: Is Loop,Parse,CSV faster than stacked duplicate lines?

20 Sep 2018, 06:39

Thank you garry! so ill try inserting the code between that and test. Thanks man.
DRocks
Posts: 565
Joined: 08 May 2018, 10:20

Re: Performance: Is Loop,Parse,CSV faster than stacked duplicate lines?

20 Sep 2018, 07:05

works like a charm thanks so much!

- SetBatchLines, -1 is 50% faster than default mode.
- Commaseperated math formulas on one line in the loop method or duplicate linesmethod is 1.5ms faster

Duplicate lines is 1.5ms faster than Loop Parse


so as a conclusion: Duplicate lines feels ugly and confusing but they are effectively and consistently 1.5ms faster in this particular case over 1 000 000 repeats of the script

Code: Select all

	DEPENSES_MONTANT_W_RATIO:=15,	DEPENSES_MONTANT_W:=ROUND(((DEPENSES_MONTANT_W_RATIO*TABLE_PROPORTIONS)/100*6))
	, DEPENSES_MONTANT_X:=TABLE_X_MARGIN + THIS_PREVIOUS_CONTROL_X, THIS_PREVIOUS_CONTROL_X:=THIS_PREVIOUS_CONTROL_X + DEPENSES_MONTANT_W + TABLE_X_INCREMENT
	
	, DEPENSES_CODETAXE_W_RATIO:=10, DEPENSES_CODETAXE_W:=ROUND(((DEPENSES_CODETAXE_W_RATIO*TABLE_PROPORTIONS)/100*6)) ; EN POURCENTAGE DE LA TABLE TOTALE
	, DEPENSES_CODETAXE_X:= 	TABLE_X_MARGIN + THIS_PREVIOUS_CONTROL_X, THIS_PREVIOUS_CONTROL_X:=THIS_PREVIOUS_CONTROL_X + DEPENSES_CODETAXE_W + TABLE_X_INCREMENT
	
	, DEPENSES_TPS_W_RATIO:=10, DEPENSES_TPS_W:=ROUND(((DEPENSES_TPS_W_RATIO*TABLE_PROPORTIONS)/100*6)) ; EN POURCENTAGE DE LA TABLE TOTALE
	, DEPENSES_TVQ_W_RATIO:=10, DEPENSES_TVQ_W:=ROUND(((DEPENSES_TVQ_W_RATIO*TABLE_PROPORTIONS)/100*6)) ; EN POURCENTAGE DE LA TABLE TOTALE
	, DEPENSES_TPS_X:=TABLE_X_MARGIN + THIS_PREVIOUS_CONTROL_X, THIS_PREVIOUS_CONTROL_X:=THIS_PREVIOUS_CONTROL_X + DEPENSES_TPS_W + TABLE_X_INCREMENT, DEPENSE_TPS_TVQ_LINK_X:= THIS_PREVIOUS_CONTROL_X
	, DEPENSES_TVQ_X:=TABLE_X_MARGIN + THIS_PREVIOUS_CONTROL_X, THIS_PREVIOUS_CONTROL_X:=THIS_PREVIOUS_CONTROL_X + DEPENSES_TVQ_W + TABLE_X_INCREMENT
	
	, DEPENSES_DESCRIPTION_W_RATIO:=30, DEPENSES_DESCRIPTION_W:=ROUND(((DEPENSES_DESCRIPTION_W_RATIO*TABLE_PROPORTIONS)/100*6)) ; EN POURCENTAGE DE LA TABLE TOTALE
	, DEPENSES_DESCRIPTION_X:=TABLE_X_MARGIN + THIS_PREVIOUS_CONTROL_X, THIS_PREVIOUS_CONTROL_X:=THIS_PREVIOUS_CONTROL_X + DEPENSES_DESCRIPTION_W + TABLE_X_INCREMENT
	
	, DEPENSES_CATEGORIE_W_RATIO:=25, DEPENSES_CATEGORIE_W:=ROUND(((DEPENSES_CATEGORIE_W_RATIO*TABLE_PROPORTIONS)/100*6)) ; EN POURCENTAGE DE LA TABLE TOTALE
	, DEPENSES_CATEGORIE_X:=TABLE_X_MARGIN + THIS_PREVIOUS_CONTROL_X, THIS_PREVIOUS_CONTROL_X:=THIS_PREVIOUS_CONTROL_X + DEPENSES_CATEGORIE_W + TABLE_X_INCREMENT

Return to “Ask for Help (v1)”

Who is online

Users browsing this forum: Lamron750 and 277 guests